On Tue, 6 Dec 2022 10:16:38 GMT, Alan Bateman <al...@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 <al...@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

Reply via email to