Hello users.

I am new to boost:threads, so my apologies in advance.

I am getting an assertion failure right before main() exits. Specifically, I get the following error: "/usr/include/boost/thread/pthread/mutex.hpp:45: boost::mutex::~mutex(): Assertion `!pthread_mutex_destroy(&m)' failed."

Below is the code snippet:

***********************************************************************************************************************************
class Test
{
private:
    boost::mutex mtx;

public:
    int counter;
    Test()
    {
        counter = 10;
    }
    void DoWork()
    {
        for(unsigned int i = 0; i < 1000000; i++)
        {
            mtx.try_lock();
            counter++;
            mtx.unlock();
        }
    }
};


int main()
{
    unsigned     int N = 7;
    boost::thread* test_threads = new thread_type[N];
    for(unsigned int i = 0; i < N; i++)
    {
        test_threads[i] = thread_type(boost::lambda::bind<void>(&Test::insert, &object));
    }

    for(unsigned int i = 0; i < N; i++)
    {
        test_threads[i].join();
    }

    return 1;
}
***********************************************************************************************************************************


Can somebody shed some light? Main() exits normally, if I replace mtx.try_lock() with mtx.lock(). Why this behavior?

Best Regards,
Panagiotis Foteinos