implemented read write locks

multiple reads, exclusive writes