This class represents a "thread local" variable: one which has a different value on each thread.
More...
template<class T>
class SimTK::ThreadLocal< T >
This class represents a "thread local" variable: one which has a different value on each thread.
This is useful in many situations when writing multithreaded code. For example, it can be used as temporary workspace for calculations. If a single workspace object were created, all access to it would need to be synchronized to prevent threads from overwriting each other's values. Using a ThreadLocal instead means that a separate workspace object will automatically be created for each thread.
To use it, simply create a ThreadLocal, then call get() or upd() to get a readable or writable reference to the value for the current thread:
ThreadLocal<int> x;
...
x.upd() = 5;
assert(x.get() == 5);