diff options
author | Koundinya Veluri <kouvel@users.noreply.github.com> | 2017-09-15 14:15:25 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-09-15 14:15:25 -0700 |
commit | b8dda0cbf7eae770fc685378ad7c542e2468a209 (patch) | |
tree | e6a5ace0a08363f22021ed46246e9e8125310be3 /config.json | |
parent | a38aa2433942a2a200ca483c104fb0adf71db6e3 (diff) | |
download | coreclr-b8dda0cbf7eae770fc685378ad7c542e2468a209.tar.gz coreclr-b8dda0cbf7eae770fc685378ad7c542e2468a209.tar.bz2 coreclr-b8dda0cbf7eae770fc685378ad7c542e2468a209.zip |
Revert two changes to thread requests (#14015)
Reverting 99db31c41d5057e08cc4701c79f11246b9191a9b and fd91ee1fa23f35130f576c19dfaf35934dc2ce24 to unblock others while trying to figure out what the issues are and how to fix them.
fd91ee1fa23f35130f576c19dfaf35934dc2ce24 is causing @benaadams thread pool perf test (https://github.com/benaadams/ThreadPoolTaskTesting) to hang due to a missed thread request. Somehow wsqActive is ending up at zero while there is a work item in the queue and with no pending thread requests. I don't understand how yet.
99db31c41d5057e08cc4701c79f11246b9191a9b appears to have a potential issue because the order of MarkThreadRequestSatisfied and Dequeue are reversed. For instance, assuming a proc count of 1:
- Initial state: 1 work item enqueued, 1 thread request
- T1 Dispatch: dequeues a work item and requests a thread (0 work items, 1 thread request)
- T1 Dispatch: sees no more work items, returns
- T1 calls Dispatch again due to its own thread request
- T1 Dispatch: After Dequeue (which saw 0 work items) and before MarkThreadRequestSatisfied:
- Current state: 0 work items, 1 thread request
- T2 enqueues a work item, sees 1 thread request and does not request a thread (1 work item, 1 thread request)
- T1 Dispatch: MarkThreadRequestSatisfied decrements thread requests (1 work item, 0 thread requests)
- Now after T1 returns, it won't wake up again but there is still one work item in the queue
Diffstat (limited to 'config.json')
0 files changed, 0 insertions, 0 deletions