我通常对多线程还很陌生,我想知道如何在其他线程读取/更新共享整数变量时将其锁定为其他线程无法访问。
当我尝试执行SyncLock myInteger
时,出现该错误:错误6'SyncLock'操作数不能为'Integer'类型,因为'Integer'不是引用类型。
这是我的意思的简化示例
Private Shared myInteger As Integer
Private Sub MySub()
SyncLock myInteger ' This does not work
' read/write a new value to myInteger
End SyncLock
End Sub
MySub由该类的多个实例调用,并在多个线程中运行
最佳答案
我怀疑您不完全了解SyncLock
的功能。即使您可以做到这一点(例如,如果Integer
是引用类型),您也不想这样做-因为当您替换myInteger
的值时,该锁将无用。
您应该锁定其他东西(我个人通常是为了锁定而通常声明一个单独的只读变量,通常是Object
类型),或者您只想随时在myInteger
上进行操作(而不是进行某些复合操作)需要同时读取或更新多个变量),请使用 Interlocked
类。