Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void lock()
- {
- if(try_lock())
- {
- return;
- }
- long old_count=active_count;
- mark_waiting_and_try_lock(old_count);
- if(old_count&lock_flag_value)
- {
- bool lock_acquired=false;
- void* const sem=get_event();
- do
- {
- BOOST_VERIFY(win32::WaitForSingleObject(
- sem,::boost::detail::win32::infinite)==0);
- clear_waiting_and_try_lock(old_count);
- lock_acquired=!(old_count&lock_flag_value);
- }
- while(!lock_acquired);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement