我通常对多线程还很陌生,我想知道如何在其他线程读取/更新共享整数变量时将其锁定为其他线程无法访问。

当我尝试执行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 类。

10-06 16:04