@@ -68,50 +68,17 @@ void lock_and_signal::unlock() {
68
68
* Wait indefinitely until condition is signaled.
69
69
*/
70
70
void lock_and_signal::wait () {
71
- timed_wait (0 );
72
- }
73
-
74
- bool lock_and_signal::timed_wait (size_t timeout_in_ms) {
75
71
assert (lock_held_by_current_thread ());
76
72
_holding_thread = INVALID_THREAD;
77
- bool rv = true ;
78
73
#if defined(__WIN32__)
79
74
LeaveCriticalSection (&_cs);
80
- DWORD timeout = timeout_in_ms == 0 ? INFINITE : timeout_in_ms;
81
- rv = WaitForSingleObject (_event, timeout) != WAIT_TIMEOUT;
75
+ WaitForSingleObject (_event, INFINITE);
82
76
EnterCriticalSection (&_cs);
83
77
_holding_thread = GetCurrentThreadId ();
84
78
#else
85
- if (timeout_in_ms == 0 ) {
86
- CHECKED (pthread_cond_wait (&_cond, &_mutex));
87
- } else {
88
- timeval time_val;
89
- gettimeofday (&time_val, NULL );
90
- timespec time_spec;
91
- time_spec.tv_sec = time_val.tv_sec + 0 ;
92
- time_spec.tv_nsec = time_val.tv_usec * 1000 + timeout_in_ms * 1000000 ;
93
- if (time_spec.tv_nsec >= 1000000000 ) {
94
- time_spec.tv_sec ++;
95
- time_spec.tv_nsec -= 1000000000 ;
96
- }
97
- int cond_wait_status
98
- = pthread_cond_timedwait (&_cond, &_mutex, &time_spec);
99
- switch (cond_wait_status) {
100
- case 0 :
101
- // successfully grabbed the lock.
102
- break ;
103
- case ETIMEDOUT:
104
- // Oops, we timed out.
105
- rv = false ;
106
- break ;
107
- default :
108
- // Error
109
- CHECKED (cond_wait_status);
110
- }
111
- }
79
+ CHECKED (pthread_cond_wait (&_cond, &_mutex));
112
80
_holding_thread = pthread_self ();
113
81
#endif
114
- return rv;
115
82
}
116
83
117
84
/* *
0 commit comments