Thread-safety
- All components used in multiple threads must be thread-safe. (This mainly concerns assertions.)
The checkpoint mecanism used by the assertions used a static variable. It was made thread-safe by the use of thread local storage. To achieve this, a minimal portable thread api is embedded in CppUnit2. The smart-pointer reference counter needs to be thread-safe. Care must be taken when manipulating std::strings across thread as they often use non-thread-safe reference counting.
Notes: WIN32 implementations for this are done. pthread & MacOS implementations need to be done. (Mac OS X uses pthread for its threading model)