Boost logo

Boost Users :

Subject: [Boost-users] How to use scoped_lock
From: weii (willgunx_at_[hidden])
Date: 2010-03-20 01:16:45


Dear all,

I got a compiler(gcc 3.4.5) error while using boost.thread.

The following is my code:
-----------------------------------------------------------------------------------------------------------------------------
#include <boost/thread/thread.hpp>
#include <boost/thread/mutex.hpp>
#include <boost/bind.hpp>
#include <iostream>

boost::mutex io_mutex;

void count(int id)
{
     boost::mutex::scoped_lock lock(io_mutex,false);
     for (int i = 0; i < 10; ++i)
     {
         lock.lock();
         std::cout << id << ": " << i << std::endl;
         lock.unlock();
     }
}

int main(int argc, char* argv[])
{
     boost::thread thrd1(count, 1);
     boost::thread thrd2(count, 2);
     thrd1.join();
     thrd2.join();
     return 0;
}
-----------------------------------------------------------------------------
I know I can just abandon the lock() and unlock() function since the
constructor and destructor will do them for me.
But I can't understand how this error occurs and why the compiler has
something to do with basic_timed_mutex.

Anyone can give me some clues?
Thanks in advance.


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net