Boost 1.37.0, Red Hat Enterprise Linux 5 x86_64, gcc 4.1:
The following simple test establishes a barrier with thread count 2.
One of the threads destroys the barrier after returning from wait(). This results in sporadic assertions from ~mutex().
boost/thread/pthread/mutex.hpp:45: boost::mutex::~mutex(): Assertion `!pthread_mutex_destroy(&m)' failed.
#1 0x00000038306295d6 in __assert_fail () from /lib64/libc.so.6
#2 0x000000000040245a in ~mutex (this=0x1f63f010) at boost/thread/pthread/mutex.hpp:45
#3 0x0000000000402488 in ~barrier (this=0x1f63f010) at boost/thread/barrier.hpp:24
I assume that this usage of barrier is not supported/allowed. One cannot assume that the barrier can be destroyed just because the corresponding thread returned from wait().
Is this conclusion correct?
Regards, Peter.
#include