2
0
mirror of https://github.com/boostorg/thread.git synced 2026-01-26 07:02:12 +00:00

Modify mark_waiting_and_try_lock to return modified count if mutex already locked

[SVN r82828]
This commit is contained in:
Anthony Williams
2013-02-12 08:21:40 +00:00
parent fb2310b48a
commit 1dad495280

View File

@@ -93,10 +93,13 @@ namespace boost
{
for(;;)
{
long const new_count=(old_count&lock_flag_value)?(old_count+1):(old_count|lock_flag_value);
bool const was_locked=(old_count&lock_flag_value);
long const new_count=was_locked?(old_count+1):(old_count|lock_flag_value);
long const current=BOOST_INTERLOCKED_COMPARE_EXCHANGE(&active_count,new_count,old_count);
if(current==old_count)
{
if(was_locked)
old_count=new_count;
break;
}
old_count=current;