inline fun <T> ReentrantReadWriteLock.write(
action: () -> 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.
Return the return value of the action.