Skip to content

Commit 60052bd

Browse files
committed
update global scheduler behaviour
1 parent b5cd8fd commit 60052bd

1 file changed

Lines changed: 15 additions & 1 deletion

File tree

core/src/main/java/io/netty/loom/GlobalDelegateThreadNettyScheduler.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,21 @@ public void onStart(Thread.VirtualThreadTask virtualThreadTask) {
5656

5757
@Override
5858
public void onContinue(Thread.VirtualThreadTask virtualThreadTask) {
59-
59+
var attachment = virtualThreadTask.attachment();
60+
if (attachment instanceof AtomicReference<?>) {
61+
// TODO create a EventLoopSchedulerRef type
62+
@SuppressWarnings("unchecked")
63+
var ref = (AtomicReference<VirtualThreadNettyScheduler>) attachment;
64+
var scheduler = ref.get();
65+
if (scheduler != null) {
66+
if (scheduler.execute(virtualThreadTask)) {
67+
return;
68+
}
69+
}
70+
// the v thread has been rejected by its assigned scheduler or its scheduler is gone
71+
virtualThreadTask.attach(null);
72+
}
73+
jdkBuildinScheduler.onContinue(virtualThreadTask);
6074
}
6175

6276
// just for benchmark

0 commit comments

Comments
 (0)