.net WaitAny和SyncLock?
我有一些我正在使用的遗留代码,我遇到了一些对我来说没有意义的东西.net WaitAny和SyncLock?,.net,multithreading,.net,Multithreading,我有一些我正在使用的遗留代码,我遇到了一些对我来说没有意义的东西 WaitHandle.WaitAny(AutoResetEventArray, System.Threading.Timeout.Infinite, False) Do Until aListCount = 0 SyncLock ALockingObject 'doing some stuff End
WaitHandle.WaitAny(AutoResetEventArray, System.Threading.Timeout.Infinite, False)
Do Until aListCount = 0
SyncLock ALockingObject
'doing some stuff
End SyncLock
Loop
我远非线程方面的专家,但我的理解是WaitAny在接收到设置的事件之前会阻塞线程,所以我想知道同步锁的用途是什么。有人能解释一下我对线程的误解,或者解释一下为什么代码会这样构造吗?仅供参考,AutoResetEventArray的大小为1。
WaitAny
调用正在等待设置AutoResetEventArray
中的任何WaitHandle
s。一旦发生这种情况,它将在循环中锁定ALockingObject
。在AutoResetEventArray
和alockgObject
中,没有任何东西(无论如何,在您的代码中)指示句柄之间的关系,因此,我假设还有其他操作使用了受alockobject
保护的资源。同步锁可能用于其他线程。感谢您的反馈。多亏了slaks。这是一个相当多的遗留代码,所以我将看看我是否可以找到一个关系。WaitAny(或任何等待)仅解除阻止线程它不保证在另一个线程解除阻止并开始执行之前执行代码。。。