Advertisement
Guest User

Untitled

a guest
Jun 24th, 2017
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.81 KB | None | 0 0
  1. void lock()
  2. {
  3. if(try_lock())
  4. {
  5. return;
  6. }
  7. long old_count=active_count;
  8. mark_waiting_and_try_lock(old_count);
  9.  
  10. if(old_count&lock_flag_value)
  11. {
  12. bool lock_acquired=false;
  13. void* const sem=get_event();
  14.  
  15. do
  16. {
  17. BOOST_VERIFY(win32::WaitForSingleObject(
  18. sem,::boost::detail::win32::infinite)==0);
  19. clear_waiting_and_try_lock(old_count);
  20. lock_acquired=!(old_count&lock_flag_value);
  21. }
  22. while(!lock_acquired);
  23. }
  24. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement