File tree 1 file changed +11
-2
lines changed
1 file changed +11
-2
lines changed Original file line number Diff line number Diff line change @@ -118,10 +118,19 @@ _PySemaphore_PlatformWait(_PySemaphore *sema, _PyTime_t timeout)
118
118
if (timeout >= 0 ) {
119
119
struct timespec ts ;
120
120
121
+ #if defined(CLOCK_MONOTONIC ) && defined(HAVE_SEM_CLOCKWAIT )
122
+ _PyTime_t deadline = _PyTime_Add (_PyTime_GetMonotonicClock (), timeout );
123
+
124
+ _PyTime_AsTimespec_clamp (deadline , & ts );
125
+
126
+ err = sem_clockwait (& sema -> platform_sem , CLOCK_MONOTONIC , & ts );
127
+ #else
121
128
_PyTime_t deadline = _PyTime_Add (_PyTime_GetSystemClock (), timeout );
122
- _PyTime_AsTimespec (deadline , & ts );
129
+
130
+ _PyTime_AsTimespec_clamp (deadline , & ts );
123
131
124
132
err = sem_timedwait (& sema -> platform_sem , & ts );
133
+ #endif
125
134
}
126
135
else {
127
136
err = sem_wait (& sema -> platform_sem );
@@ -151,7 +160,7 @@ _PySemaphore_PlatformWait(_PySemaphore *sema, _PyTime_t timeout)
151
160
struct timespec ts ;
152
161
153
162
_PyTime_t deadline = _PyTime_Add (_PyTime_GetSystemClock (), timeout );
154
- _PyTime_AsTimespec (deadline , & ts );
163
+ _PyTime_AsTimespec_clamp (deadline , & ts );
155
164
156
165
err = pthread_cond_timedwait (& sema -> cond , & sema -> mutex , & ts );
157
166
}
You can’t perform that action at this time.
0 commit comments