1

我有一个聊天连接类,一旦与该Connect方法连接,就可以使用该方法发送消息SendMessage。用户完成后,他们会调用Disconnect.

我想要一个允许无限数量的SendMessage操作获取锁的锁,但只允许Connect/操作Disconnect在它们拥有独占锁并且所有其他SendMessage/ Connect/Disconnect操作已退出并释放锁时开始。

使用这种类型的锁,我可以确保对internal和classes 的SendMessage安全访问Socket,并且可以确保它们都不会被并行调用处理。SocketReaderSocketWriterDisconnect

它还具有排队所有Connect/的好处Disconnect,这显然不能同时运行。

.NET 框架中是否存在这样的锁?

4

2 回答 2

3

听起来您想要.Net 4 中的ReaderWriterLock或更好ReaderWriterLockSlim的。要使用 SendMessage,您将获得读取器锁,但调用ConnectDisconnect需要写入器锁。

于 2013-02-02T22:55:01.450 回答
1

看来您正在寻找ReaderWriterLockSlim.

于 2013-02-02T22:55:00.173 回答