diff options
author | Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> | 2019-06-10 11:08:29 +0200 |
---|---|---|
committer | Marc Mutz <marc.mutz@kdab.com> | 2019-06-20 20:48:59 +0200 |
commit | 34fe9232dbf6a9fe58ebc4c7680bb67d2f642c40 (patch) | |
tree | d85afa295e882b84aa11c8861d6b85799c2f7e71 /src/concurrent | |
parent | 84e89c1e9e00d4fab576b876cfa80e92b5602982 (diff) |
Port from QAtomic::load() to loadRelaxed()
Semi-automated, just needed ~20 manual fixes:
$ find \( -iname \*.cpp -or -iname \*.h \) -exec perl -pe 's/(\.|->)load\(\)/$1loadRelaxed\(\)/g' -i \{\} +
$ find \( -iname \*.cpp -or -iname \*.h \) -exec perl -pe 's/(\.|->)store\(/$1storeRelaxed\(/g' -i \{\} +
It can be easily improved (e.g. for store check that there are no commas
after the opening parens). The most common offender is QLibrary::load,
and some code using std::atomic directly.
Change-Id: I07c38a3c8ed32c924ef4999e85c7e45cf48f0f6c
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Diffstat (limited to 'src/concurrent')
-rw-r--r-- | src/concurrent/qtconcurrentiteratekernel.h | 8 | ||||
-rw-r--r-- | src/concurrent/qtconcurrentthreadengine.cpp | 10 |
2 files changed, 9 insertions, 9 deletions
diff --git a/src/concurrent/qtconcurrentiteratekernel.h b/src/concurrent/qtconcurrentiteratekernel.h index 89fd3d2592..3095c9ff52 100644 --- a/src/concurrent/qtconcurrentiteratekernel.h +++ b/src/concurrent/qtconcurrentiteratekernel.h @@ -206,9 +206,9 @@ public: bool shouldStartThread() override { if (forIteration) - return (currentIndex.load() < iterationCount) && !this->shouldThrottleThread(); + return (currentIndex.loadRelaxed() < iterationCount) && !this->shouldThrottleThread(); else // whileIteration - return (iteratorThreads.load() == 0); + return (iteratorThreads.loadRelaxed() == 0); } ThreadFunctionResult threadFunction() override @@ -230,7 +230,7 @@ public: const int currentBlockSize = blockSizeManager.blockSize(); - if (currentIndex.load() >= iterationCount) + if (currentIndex.loadRelaxed() >= iterationCount) break; // Atomically reserve a block of iterationCount for this thread. @@ -261,7 +261,7 @@ public: // Report progress if progress reporting enabled. if (progressReportingEnabled) { completed.fetchAndAddAcquire(finalBlockSize); - this->setProgressValue(this->completed.load()); + this->setProgressValue(this->completed.loadRelaxed()); } if (this->shouldThrottleThread()) diff --git a/src/concurrent/qtconcurrentthreadengine.cpp b/src/concurrent/qtconcurrentthreadengine.cpp index 968720cbbe..7f91a2ba68 100644 --- a/src/concurrent/qtconcurrentthreadengine.cpp +++ b/src/concurrent/qtconcurrentthreadengine.cpp @@ -91,7 +91,7 @@ ThreadEngineBarrier::ThreadEngineBarrier() void ThreadEngineBarrier::acquire() { forever { - int localCount = count.load(); + int localCount = count.loadRelaxed(); if (localCount < 0) { if (count.testAndSetOrdered(localCount, localCount -1)) return; @@ -105,7 +105,7 @@ void ThreadEngineBarrier::acquire() int ThreadEngineBarrier::release() { forever { - int localCount = count.load(); + int localCount = count.loadRelaxed(); if (localCount == -1) { if (count.testAndSetOrdered(-1, 0)) { semaphore.release(); @@ -125,7 +125,7 @@ int ThreadEngineBarrier::release() void ThreadEngineBarrier::wait() { forever { - int localCount = count.load(); + int localCount = count.loadRelaxed(); if (localCount == 0) return; @@ -139,7 +139,7 @@ void ThreadEngineBarrier::wait() int ThreadEngineBarrier::currentCount() { - return count.load(); + return count.loadRelaxed(); } // releases a thread, unless this is the last thread. @@ -147,7 +147,7 @@ int ThreadEngineBarrier::currentCount() bool ThreadEngineBarrier::releaseUnlessLast() { forever { - int localCount = count.load(); + int localCount = count.loadRelaxed(); if (qAbs(localCount) == 1) { return false; } else if (localCount < 0) { |