@@ -29,12 +29,6 @@ _STL_DISABLE_CLANG_WARNINGS
2929
3030_STD_BEGIN
3131
32- template <class _Rep, class _Period>
33- _NODISCARD unsigned long long _Semaphore_deadline(const chrono::duration<_Rep, _Period>& _Rel_time) {
34- return __std_atomic_wait_get_deadline(
35- chrono::duration_cast<chrono::duration<unsigned long long, milli>>(_Rel_time).count());
36- }
37-
3832template <class _Clock, class _Duration>
3933_NODISCARD unsigned long _Semaphore_remaining_timeout(const chrono::time_point<_Clock, _Duration>& _Abs_time) {
4034 const auto _Now = _Clock::now();
@@ -145,11 +139,11 @@ public:
145139
146140 template <class _Rep, class _Period>
147141 _NODISCARD_TRY_CHANGE_STATE bool try_acquire_for(const chrono::duration<_Rep, _Period>& _Rel_time) {
148- auto _Deadline = _Semaphore_deadline(_Rel_time) ;
142+ auto _Deadline = _STD chrono::steady_clock::now() + _Rel_time ;
149143 ptrdiff_t _Current = _Counter.load(memory_order_relaxed);
150144 for (;;) {
151145 while (_Current == 0) {
152- const auto _Remaining_timeout = __std_atomic_wait_get_remaining_timeout (_Deadline);
146+ const auto _Remaining_timeout = _Semaphore_remaining_timeout (_Deadline);
153147 if (_Remaining_timeout == 0) {
154148 return false;
155149 }
@@ -257,7 +251,7 @@ public:
257251
258252 template <class _Rep, class _Period>
259253 _NODISCARD_TRY_CHANGE_STATE bool try_acquire_for(const chrono::duration<_Rep, _Period>& _Rel_time) {
260- auto _Deadline = _Semaphore_deadline(_Rel_time) ;
254+ auto _Deadline = _STD chrono::steady_clock::now() + _Rel_time ;
261255 for (;;) {
262256 // "happens after release" ordering is provided by this exchange, so loads and waits can be relaxed
263257 // TRANSITION, GH-1133: should be memory_order_acquire
@@ -267,7 +261,7 @@ public:
267261 }
268262 _STL_VERIFY(_Prev == 0, "Invariant: semaphore counter is non-negative and doesn't exceed max(), "
269263 "possibly caused by memory corruption");
270- const auto _Remaining_timeout = __std_atomic_wait_get_remaining_timeout (_Deadline);
264+ const auto _Remaining_timeout = _Semaphore_remaining_timeout (_Deadline);
271265 if (_Remaining_timeout == 0) {
272266 return false;
273267 }
0 commit comments