I don't like this code, but I can't invent how to do waiting for release of 'write task' ... :-(. `ReadLock` doesn't support `Condition`