WorkerThreadPool: Polish yielding (fix corner case, remove misleading warning) #90809
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Intended to avoid a crash when a daemon task has already finished but it still exists and, before its awaited so it gets erased,
notify_yield_over()
is called with its id. Thepool_thread_index
would be-1
. This PR handles such a situation gracefully.Oh, and the warning is removed because it can legitly happen that a task notifies itself to stop yielding. A case of that is that a daemon task started yielding and thus started a collaborative wait in which it can run other tasks on top of its stack frame. Its correct that such an additional task wants to awake the underlying daemon.