Subject: [Boost-bugs] [Boost C++ Libraries] #10237: condition_variable
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2014-07-24 05:30:20
#10237: condition_variable
-------------------------------------+----------------------
Reporter: anonymous | Owner: anthonyw
Type: Bugs | Status: new
Milestone: To Be Determined | Component: thread
Version: Boost 1.55.0 | Severity: Problem
Keywords: condition_variable wait |
-------------------------------------+----------------------
Os:any windows
The app will wait infinitly when app code like below:
//thread A
{{{
cout<<"Start to wait B..."<<endl;
con.wait(lock);
cout<<"Run A..."<<endl;
boost::this_thread::sleep(boost::posix_time::seconds(1));//do something
cout<<"Start to notify B..."<<endl;
con.notify_one();
cout<<"End to notify B..."<<endl;
}}}
//thread B
{{{
boost::this_thread::sleep(boost::posix_time::seconds(2));//do something
con.notify_one();
boost::this_thread::sleep(boost::posix_time::seconds(2));
cout<<"Start to wait A..."<<endl;
con.wait(lock);//thread A will call notify_one before this line
cout<<"Run again A..."<<endl;
}}}
cause:\boost\thread\win32\condition_variable.hpp line 261
{{{
if(detail::interlocked_read_acquire(&total_count))
}}}
The code will get read acquire count,and skip release when read acquire
count is zero
-- Ticket URL: <https://svn.boost.org/trac/boost/ticket/10237> Boost C++ Libraries <http://www.boost.org/> Boost provides free peer-reviewed portable C++ source libraries.
This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:16 UTC