是否有允许多个线程访问的锁,直到线程请求独占访问
本文关键字:线程 访问 请求 许多个 是否 | 更新日期: 2023-09-27 17:57:20
我有一个聊天连接类,一旦与Connect
方法连接,就能够使用SendMessage
方法发送消息。用户完成后,他们调用Disconnect
。
我想要一个允许无限数量的SendMessage
操作来取锁的锁,但只允许 Connect
/Disconnect
操作在它们具有独占锁并且所有其他 SendMessage
/Connect
/Disconnect
操作退出并释放锁后开始。
使用这种类型的锁,我可以确保SendMessage
可以安全地访问内部Socket
,SocketReader
和SocketWriter
类,并且可以确保它们都不会被并行Disconnect
调用处理。
它还具有排队所有Connect
/Disconnect
,显然不能同时运行。
.NET 框架中是否存在这样的锁?
听起来你想要在.Net 4中使用ReaderWriterLock
或更好的ReaderWriterLockSlim
。要使用 SendMessage,您将获得读取器锁,但调用Connect
或Disconnect
将需要编写器锁。
看来你正在寻找ReaderWriterLockSlim
.