r/w lock variants