summaryrefslogtreecommitdiffstats
path: root/src/corelib/global/qlogging.cpp
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@qt.io>2023-07-05 08:54:34 +0200
committerMarc Mutz <marc.mutz@qt.io>2023-07-06 09:26:39 +0200
commit06d520dbef21f5debe9f092c63d2aa9b02afb4c3 (patch)
treeebac534224881799b3e0b2883180ac75c94a7d81 /src/corelib/global/qlogging.cpp
parentb933a5668cc5647d26378f8a9a52901d0497585d (diff)
QLogging: add qYieldCpu() to CAS loop
CAS failures should result in PAUSE/YIELD, cf. qYieldCpu() docs. qYieldCpu() is only available since Qt 6.3, though, so adding it as a follow-up with limited pick-to. Task-number: QTBUG-115062 Pick-to: 6.6 6.5 Change-Id: Ibcc73881875a47935940015e30b9a27a282054d4 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/global/qlogging.cpp')
-rw-r--r--src/corelib/global/qlogging.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/corelib/global/qlogging.cpp b/src/corelib/global/qlogging.cpp
index 86eb6fbf4cd..50b2ac9cd0f 100644
--- a/src/corelib/global/qlogging.cpp
+++ b/src/corelib/global/qlogging.cpp
@@ -14,6 +14,7 @@
#include "qdebug.h"
#include "qmutex.h"
#include <QtCore/private/qlocking_p.h>
+#include <QtCore/private/qsimd_p.h>
#include "qloggingcategory.h"
#ifndef QT_BOOTSTRAPPED
#include "qelapsedtimer.h"
@@ -23,7 +24,6 @@
#include "qthread.h"
#include "private/qloggingregistry_p.h"
#include "private/qcoreapplication_p.h"
-#include "private/qsimd_p.h"
#include <qtcore_tracepoints_p.h>
#endif
#ifdef Q_OS_WIN
@@ -191,7 +191,7 @@ static bool is_fatal_count_down(QAtomicInt &n)
int v = n.loadRelaxed();
while (v != 0 && !n.testAndSetRelaxed(v, v - 1, v))
- ;
+ qYieldCpu();
return v == 1; // we exited the loop, so either v == 0 or CAS succeeded to set n from v to v-1
}