我有一个多个线程读取的List<T>
。很少一些线程添加或删除列表。我知道线程必须在同步块中使用该对象。但是通过这种方式,当另一个线程正在读取列表时,每个线程都应该等待。
我只想阻塞写线程。因此,多个线程可以同时从列表中读取数据,但是如果另一个线程想要编辑列表,它将等待,直到所有其他读取线程都完成列表,并且每个读取线程都将等待,如果一个线程正在编辑列表。这可能吗?
您可以实现读写锁,可能具有写首选优先级:
读写锁:https://en.wikipedia.org/wiki/Readers%E2%80%93writer_lock
那一页也提到了一些备选方案。