diff options
author | Ahmad Samir <a.samirh78@gmail.com> | 2022-10-31 12:50:39 +0200 |
---|---|---|
committer | Ahmad Samir <a.samirh78@gmail.com> | 2023-06-09 17:45:14 +0300 |
commit | 3e7d68a6f429b7cbac4e0ae41c7ad7d4747fb2c2 (patch) | |
tree | f889b256f5c878dae4f5e70a9272c635fceb2f6e /src/corelib/thread/qsemaphore.cpp | |
parent | 71c9b9f05b9e3d0d655db33e75207a90509849e1 (diff) |
QtLinuxFutex, QBasicMutex, QSemaphore: use chrono for time arithmetic
Done-With: Thiago Macieira <thiago.macieira@intel.com>
Change-Id: I7c696d58ee596254f91bcd131fe884b6e6ef0852
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/thread/qsemaphore.cpp')
-rw-r--r-- | src/corelib/thread/qsemaphore.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/corelib/thread/qsemaphore.cpp b/src/corelib/thread/qsemaphore.cpp index a7b423e4e7..95893d731e 100644 --- a/src/corelib/thread/qsemaphore.cpp +++ b/src/corelib/thread/qsemaphore.cpp @@ -148,7 +148,8 @@ template <bool IsTimed> bool futexSemaphoreTryAcquire_loop(QBasicAtomicInteger<quintptr> &u, quintptr curValue, quintptr nn, QDeadlineTimer timer) { - qint64 remainingTime = IsTimed ? timer.remainingTimeNSecs() : -1; + using namespace std::chrono; + nanoseconds remainingTime = IsTimed ? timer.remainingTimeAsDuration() : -1ns; int n = int(unsigned(nn)); // we're called after one testAndSet, so start by waiting first @@ -165,7 +166,7 @@ futexSemaphoreTryAcquire_loop(QBasicAtomicInteger<quintptr> &u, quintptr curValu } } - if (IsTimed && remainingTime > 0) { + if (IsTimed && remainingTime > 0ns) { bool timedout = !futexWait(*ptr, curValue, remainingTime); if (timedout) return false; @@ -175,7 +176,7 @@ futexSemaphoreTryAcquire_loop(QBasicAtomicInteger<quintptr> &u, quintptr curValu curValue = u.loadAcquire(); if (IsTimed) - remainingTime = timer.remainingTimeNSecs(); + remainingTime = timer.remainingTimeAsDuration(); // try to acquire while (futexAvailCounter(curValue) >= n) { @@ -185,7 +186,7 @@ futexSemaphoreTryAcquire_loop(QBasicAtomicInteger<quintptr> &u, quintptr curValu } // not enough tokens available, put us to wait - if (remainingTime == 0) + if (IsTimed && remainingTime == 0ns) return false; } } |