inline fun <T> ReentrantReadWriteLock.write(
    action: () -> T
): T


Executes the given action under the write lock of this lock.

The function does upgrade from read to write lock if needed, but this upgrade is not atomic as such upgrade is not supported by ReentrantReadWriteLock. In order to do such upgrade this function first releases all read locks held by this thread, then acquires write lock, and after releasing it acquires read locks back again.

Therefore if the action inside write lock has been initiated by checking some condition, the condition must be rechecked inside the action to avoid possible races.

Return the return value of the action.