summaryrefslogtreecommitdiffstats
path: root/src/corelib/thread/qsemaphore.cpp
diff options
context:
space:
mode:
authorAhmad Samir <a.samirh78@gmail.com>2022-10-31 12:50:39 +0200
committerAhmad Samir <a.samirh78@gmail.com>2023-06-09 17:45:14 +0300
commit3e7d68a6f429b7cbac4e0ae41c7ad7d4747fb2c2 (patch)
treef889b256f5c878dae4f5e70a9272c635fceb2f6e /src/corelib/thread/qsemaphore.cpp
parent71c9b9f05b9e3d0d655db33e75207a90509849e1 (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.cpp9
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;
}
}