doc: improve worker pool example#33082
Closed
Uh oh!
There was an error while loading. Please reload this page.
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.
Checklist
In the worker pool example, the
kWorkerFreedEventshould be emitted in case of error as well. After adding new worker in the error handler, the pending tasks should be notified of an available worker.For instance, assume that we create a worker pool with two workers. Then we call
runTaskthrice such that the first two tasks are still running when it's called for the third time. As a result, the third task will be enqueued and wait for akWorkerFreedEvent. Now suppose that both of the first two tasks throw an error. In response, our error handler replaces the two existing workers with new ones. But ifkWorkerFreedEventis not emitted after replacing the workers, the third task which was enqueued will never (assuming no more tasks are added after that) know of an available worker and hence will never run.