Use the threadlock function in your class definition to automatically run instance methods inside of an instance-wide re-entrant lock (Monitor).
All locked methods in an instance are protect by a single lock. Alternatively, you can specify a custom lock, which need not be a Monitor; it can be anything that implements $synchronize
You can protect all or some of your methods from being run asynchronously.
In Ruby>=2.1, threadlock can also be syntactically used as a decorator.
See USAGE.rb for usage examples.
Copyright 2013 : Joe McIlvain