多线程只允许读同一时间只有块写



我有一个多个线程读取的List<T>。很少一些线程添加或删除列表。我知道线程必须在同步块中使用该对象。但是通过这种方式,当另一个线程正在读取列表时,每个线程都应该等待。

我只想阻塞写线程。因此,多个线程可以同时从列表中读取数据,但是如果另一个线程想要编辑列表,它将等待,直到所有其他读取线程都完成列表,并且每个读取线程都将等待,如果一个线程正在编辑列表。这可能吗?

您可以实现读写锁,可能具有写首选优先级:

读写锁:https://en.wikipedia.org/wiki/Readers%E2%80%93writer_lock

那一页也提到了一些备选方案。