QtConcurrent::ReduceKernel: fix race conditions
resultsMapSize is modified inside the runReduce() method, and the writes are protected via mutex lock. However, reads of resultsMapSize through shouldThrottle()/shouldStartThread() (that can be called by multiple threads) are done without a lock. Added the missing locks. Task-number: QTBUG-104787 Pick-to: 6.4 6.3 6.2 5.15 Change-Id: I700e7b66e67025bc7f570bc8ad69409b82675049 Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io> Reviewed-by: Marc Mutz <marc.mutz@qt.io>
This commit is contained in:
parent
87fabf3e4b
commit
7afb093dd7
@ -187,11 +187,13 @@ public:
|
||||
|
||||
inline bool shouldThrottle()
|
||||
{
|
||||
std::lock_guard<QMutex> locker(mutex);
|
||||
return (resultsMapSize > (ReduceQueueThrottleLimit * threadCount));
|
||||
}
|
||||
|
||||
inline bool shouldStartThread()
|
||||
{
|
||||
std::lock_guard<QMutex> locker(mutex);
|
||||
return (resultsMapSize <= (ReduceQueueStartLimit * threadCount));
|
||||
}
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user