我总是在人们使用的 SyncLock 示例中看到
Private Lock1 As New Object ' declaration
SyncLock Lock1 ' usage
但为什么?在我的具体情况下,我锁定了一个队列以避免多线程入队和出队我的数据出现问题。
我可以像这样锁定 Queue 对象本身吗?
Private cmdQueue As New Queue(Of QueueItem) ' declaration
SyncLock cmdQueue ' usage
任何帮助表示赞赏。谢谢。
编辑:
感谢所有答案,但 tcarvin 答案是我正在寻找的。该队列对于我的单例 Comms 对象是私有的,该对象对要发送的新消息进行排队(由 Send 方法公开),该队列在该对象内的工作线程中一次一条消息被使用,并且我在锁中拥有的唯一代码是一次调用 Enqueue 和 Dequeue。