Skip to main content
 首页 » 编程设计

c#之是否可以让 lock{} 或类似的结构只锁定写入

2024年01月29日25tuyile006

好吧,我的意思是我有几段代码使用了一些我想保护的变量。 但想法是多个线程只读取该变量。 并且只有一个线程正在写入它,而且它并不经常这样做。 我希望能够让多个线程同时读取并且只在写入线程访问它时锁定这个变量。

如果我使用普通的 lock(variable){} 构造,那么所有读取线程都将相互阻塞。 那么有没有办法做到这一点?

请您参考如下方法:

听起来您正在寻找 ReaderWriterLock类。

ReaderWriterLock is used to synchronize access to a resource. At any given time, it allows either concurrent read access for multiple threads, or write access for a single thread. In a situation where a resource is changed infrequently, a ReaderWriterLock provides better throughput than a simple one-at-a-time lock, such as Monitor.