Another virtual threads migration story: ReentrantReadWriteLock
David Holmes
david.holmes at oracle.com
Thu Jan 30 01:41:57 UTC 2025
On 30/01/2025 4:20 am, Andrew Haley wrote:
> On 1/29/25 16:58, Matthew Swift wrote:
>>
>> Given that scaling IO to millions of concurrent IO bound tasks was one
>> of the key motivations for vthreads, it seems a bit surprising to me
>> that a basic concurrency building block of many applications is
>> constrained to 64K concurrent accesses. Are you aware of this
>> limitation and its implications?
>
> * Lock state is logically divided into two unsigned shorts:
> * The lower one representing the exclusive (writer) lock hold
> count,
> * and the upper the shared (reader) hold count.
>
> I have no love at all for arbitrary limits, and this certainly sounds like
> one. And you may be right that these days it's something that might happen
> in real-world deployments.
More of a practical limit than an "arbitrary" one. Noone was going to
hit 64K contending platform threads. And requiring general 64-bit atomic
operations back when 32-bit was still very much mainstream, would not
have produced an efficient implementation.
> Here's a suggestion: it shouldn't be madly difficult to rewrite the code so
> that instead of an int split into two unsigned shorts, it uses a long split
> into two unsigned ints. Why not give that a try, and see what happens?
> Building OpenJDK on most platforms is fairly straightforward these days.
Simply rebasing to extend AbstractLongQueuedSynchronizer instead of AQS,
as others have suggested, may "just work".
Cheers,
David
> Once you have some information about how well it works in practice, it may
> be appropriate to talk to Doug Lea, the author, about removing the
> limitation.
>
More information about the loom-dev
mailing list