On Wed, 21 Apr 2021 04:36:07 GMT, David Holmes <dhol...@openjdk.org> wrote:

>> When going to blocked inside the async handshake we **must** unlock the 
>> HandshakeState lock.
>> Thus _lock.wait() unlocks and gives us something to notify.
>> We could do:
>> 
>> _lock.unlock();
>> {
>>   MutexLocker(SomeOtherLock) ml;
>>   SomeOtherLock.wait();
>> }
>> _lock.lock();
>> 
>> 
>> Another alternative is to create a friend class which uses the 
>> HandshakeState lock and having the API there instead.
>
> Borrowing the HandshakeState lock does create an artificial coupling here. 
> I'd prefer to see this API in a more natural place with friendship used to 
> access the mechanism as needed. Future cleanup though.

Also I think you'd have a lost-wakeup problem if two locks were involved.

-------------

PR: https://git.openjdk.java.net/jdk/pull/3191

Reply via email to