implemented read.
 waiters are propagated after unlock.