QThread: use load/store operations with explicit ordering
The implicit load is an acquire, which isn't necessary in any of these cases, including the two liens changing the store: they were creating a temporary QAtomicPointer, which introduced the loadAcquire(). I've left the qCDebug() lines alone. Pick-to: 6.5 Change-Id: If45e068eaaf3cd4d2c81fffd1459a779b4eb4110 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> (cherry picked from commit 6806391600b5398d4fdb3c4d2d5e442289522756) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
8ebf6dcd12
commit
c3fd08e42c
@ -178,7 +178,7 @@ QThreadData *QThreadData::current(bool createIfNecessary)
|
||||
data = new QThreadData;
|
||||
QT_TRY {
|
||||
set_thread_data(data);
|
||||
data->thread = new QAdoptedThread(data);
|
||||
data->thread.storeRelease(new QAdoptedThread(data));
|
||||
} QT_CATCH(...) {
|
||||
clear_thread_data();
|
||||
data->deref();
|
||||
|
@ -76,7 +76,7 @@ QThreadData *QThreadData::current(bool createIfNecessary)
|
||||
// avoid recursion.
|
||||
TlsSetValue(qt_current_thread_data_tls_index, threadData);
|
||||
QT_TRY {
|
||||
threadData->thread = new QAdoptedThread(threadData);
|
||||
threadData->thread.storeRelease(new QAdoptedThread(threadData));
|
||||
} QT_CATCH(...) {
|
||||
TlsSetValue(qt_current_thread_data_tls_index, 0);
|
||||
threadData->deref();
|
||||
@ -101,7 +101,7 @@ QThreadData *QThreadData::current(bool createIfNecessary)
|
||||
0,
|
||||
FALSE,
|
||||
DUPLICATE_SAME_ACCESS);
|
||||
qt_watch_adopted_thread(realHandle, threadData->thread);
|
||||
qt_watch_adopted_thread(realHandle, threadData->thread.loadRelaxed());
|
||||
}
|
||||
}
|
||||
return threadData;
|
||||
|
Loading…
x
Reference in New Issue
Block a user