Details
-
Bug
-
Resolution: Done
-
P2: Important
-
4.5.0
-
a9b6a78e54670a70b96c122b10ad7bd64d166514
Description
It looks like QThreadPool has some thread synchronization defect in
expiration mechanism.
I am using QThreadPool for running some tasks in a separate thread. I have
faced the following problem. Sometimes the task (QRunnable descendant) does
not start despite of the pool is idle, i.e. activeThreadCount() is 0. The
bug is reproduced when start() is called simultaneously with the moment of
thread life's expiration due to 30-second timeout. I see that starting of
another task causes thread pool to start the frozen one as well.
Attachments
Issue Links
- replaces
-
QTBUG-21048 QThreadPool, starting threads after expiry time where maxThreadCount == 0
- Closed
For Gerrit Dashboard: QTBUG-3786 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
59717,6 | QThreadPool: fix race at time of thread expiry. | dev | qt/qtbase | Status: MERGED | -1 | 0 |
64397,2 | QWaitCondition: don't return false if woken up explicitly meanwhile | dev | qt/qtbase | Status: ABANDONED | -1 | 0 |