1. Use select function to "listen" different fd(s) to prevent any blocking.

2. Use file lock provided by fcntl to inform read_server that certain part of the items is under modifying. 

3. Use in-server array to record which id(s) are locked. We have to do this because write_server cannot detect the file locks created by itself.