On Tue, 6 Dec 2022 10:16:38 GMT, Alan Bateman <[email protected]> wrote:
> The implementation of Thread.yield for virtual threads is currently a "lazy > submit". This means the task for the virtual thread is queued to the > carrier/worker local queue without signalling other threads. This behavior > can be surprising/unfair when there are tasks in the submission queues, say > when a platform thread has started or unparked a virtual thread. > > Ron, Doug Lea, Viktor Klang and I have discussed this topic and propose to > change Thread.yield to use "external submit" when the local task queue is > empty, and to push to the local queue when not empty. The change improves the > fairness but will of course increase the chances that repeated Thread.yield > will bounce between carriers. This pull request has now been integrated. Changeset: 1166c8e2 Author: Alan Bateman <[email protected]> URL: https://git.openjdk.org/jdk/commit/1166c8e2c0047869cd50b7ddc5355290ac2a695a Stats: 188 lines in 3 files changed: 161 ins; 12 del; 15 mod 8296896: Change virtual Thread.yield to use external submit Reviewed-by: jpai, rpressler ------------- PR: https://git.openjdk.org/jdk/pull/11533
