<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div dir="ltr"></div><div dir="ltr">My apologies though if the above is not correct as I can’t review your reference to Blocker and the JEP makes no mention. I don’t have east access to the source at the moment. </div><div dir="ltr"><br><blockquote type="cite">On Jul 13, 2023, at 9:18 AM, Robert Engels <rengels@ix.netcom.com> wrote:<br><br></blockquote></div><blockquote type="cite"><div dir="ltr"><meta http-equiv="content-type" content="text/html; charset=utf-8"><div dir="ltr"></div><div dir="ltr">I don’t think that is correct. From the JEP “<span style="caret-color: rgb(99, 99, 99); color: rgb(99, 99, 99); font-family: -apple-system-font; background-color: rgb(255, 255, 255);"> The implementations of these blocking operations compensate for the capture of the OS thread by temporarily expanding the parallelism of the scheduler.</span><span style="caret-color: rgb(99, 99, 99); color: rgb(99, 99, 99); font-family: -apple-system-font; background-color: rgb(255, 255, 255);"> ”</span></div><div dir="ltr"><br></div><div dir="ltr">The number of OS threads will be expanded to compensate for the blocking call. I believe the call to fd.sync() ends up being no different than an arbitrary native call. The same actions occur. </div><div dir="ltr"><br><blockquote type="cite">On Jul 13, 2023, at 8:28 AM, Brian S O'Neill <bronee@gmail.com> wrote:<br><br></blockquote></div><blockquote type="cite"><div dir="ltr"><span>An application which relies on a non-virtual thread pool can spin up more platform threads to compensate, and so a sync isn't necessarily an issue. Virtual threads limit the amount of carrier threads they depend on, and so a virtual thread stuck on a sync can prevent other virtual threads from making progress. The internal Blocker class is intended to help compensate for this behavior.</span><br><span></span><br><span>On 2023-07-13 07:13 AM, Robert Engels wrote:</span><br><blockquote type="cite"><span>It is no worse than the current behavior. If it was a platform thread it would block. The virtual threads carrier thread blocks and a new carrier is spawned. So this would only be a performance optimization not a regression against current performance.</span><br></blockquote></div></blockquote></div></blockquote></body></html>