
Caleb Epstein wrote:
Here's a quick analysis of the Boost.Thread test programs and their usage of Boost.Test:
* test_barrier.cpp - OK. Doesn't use BOOST_CHECK until after all threads have been joined
* test_condition.cpp - looks like it needs work, though this test never hangs/fails for me so perhaps my analysis is incorrect.
* test_mutex.cpp - Patched (via util.inl), but I think I still see more potential problems.
* test_once.cpp - OK. See test_barrier.cpp
* test_read_write_mutex.cpp - patched to not use BOOST_CHECK. Calls BOOST_ERROR if tests fail.
* test_thread.cpp - OK. only one thread should be active at a time
* test_tss.cpp - OK. Uses a mutex to protect calls to BOOST_CHECK and there is a comment musing on the lack of thread-safety there.
* test_xtime.cpp: OK. Doesn't spawn threads.
So basically, I'm slightly concerned about test_mutex.cpp (after my patch) and test_condition.cpp but I think other than that the rest of the test programs are OK.
Bill Kempf was aware of the fact that Boost.Test isn't thread-safe (in fact, we found it out the hard way, too). I think he adjusted all the tests before he disappeared. Regards, m