Loading...
Searching...
No Matches
Reentrancy and Thread-Safety

Through the documentation, several terms are used to define how classes and their member functions can be used from multiple threads.

- A reentrant function may be called simultaneously from multiple threads if and only if each invocation uses a different instance of the class. This is the default for all member functions not explictly marked otherwise.
- A thread-safe function may be called simultaneously from multiple threads on the same instance of a class. A thread-safe function is thus reentrant. Thread-safe functions may also be called simultaneously with any other reentrant function of the same class on the same instance.

Neither reentrancy nor thread-safety, in this context, mean that a function may be called simultaneously from the same thread, for instance from a callback invoked by the function. This may deadlock and isn't allowed unless separately documented.

A class is defined as reentrant or thread-safe if all its member functions are reentrant or thread-safe respectively. Some member functions may additionally be documented as having additional thread-related attributes.

Most classes are reentrant but not thread-safe, as making them fully thread-safe would incur locking costs considered prohibitive for the expected use cases.