2

一般来说,我对多线程很陌生,我想知道如何锁定共享整数变量,使其在被其他线程读取/更新时不被其他线程访问。

当我尝试 do do 时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 由类的多个实例调用,并在多个线程中运行

4

1 回答 1

9

我怀疑你不完全理解是什么SyncLock。即使您可以这样做(Integer例如,如果是引用类型),您也不想这样做 - 因为当您替换 的值时myInteger,锁将毫无用处。

您应该锁定其他东西(我个人通常声明一个单独的只读变量,纯粹是为了锁定,通常是 type Object)或者如果您只想随时操作myInteger(而不是一些需要的复合操作同时读取或更新多个变量),使用Interlocked该类。

于 2012-05-28T18:14:20.807 回答