| 805 | // Upgrade ownership |
| 806 | |
| 807 | inline void upgrade_mutex::lock_upgrade() |
| 808 | { |
| 809 | boost::unique_lock<mutex_t> lk(mut_); |
| 810 | gate1_.wait(lk, boost::bind(&upgrade_mutex::no_writer_no_upgrader_no_max_readers, boost::ref(*this))); |
| 811 | count_t num_readers = (state_ & n_readers_) + 1; |
| 812 | state_ &= ~n_readers_; |
| 813 | state_ |= upgradable_entered_ | num_readers; |
| 814 | } |
| 815 | |
| 816 | inline bool upgrade_mutex::try_lock_upgrade() |
| 817 | { |