Integrated: 8296896: Change virtual Thread.yield to use external submit

Alan Bateman alanb at openjdk.org
Thu Dec 8 07:40:22 UTC 2022


On Tue, 6 Dec 2022 10:16:38 GMT, Alan Bateman <alanb at openjdk.org> 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 <alanb at openjdk.org>
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


More information about the core-libs-dev mailing list