| 15 | } |
| 16 | |
| 17 | int LockD(TCont* current, TInstant deadline) { |
| 18 | while (!Token_) { |
| 19 | const int ret = WaitQueue_.WaitD(current, deadline); |
| 20 | |
| 21 | if (ret != EWAKEDUP) { |
| 22 | return ret; |
| 23 | } |
| 24 | } |
| 25 | |
| 26 | Token_ = false; |
| 27 | |
| 28 | return 0; |
| 29 | } |
| 30 | |
| 31 | int LockT(TCont* current, TDuration timeout) { |
| 32 | return LockD(current, timeout.ToDeadLine()); |