我目前有一个包含4个线程的程序.
4个线程是“工作线程”,每个线程都有一个监视专用设备的专用串行端口.因此,工作线程1监视Com端口1,线程2监视Com端口2等.
这一切都很好.没有冲突.
但是,4个工作线程都必须向第5个Comm端口发送命令,这是指向可以为其他设备供电的设备的通信链接.
I.E.他们都必须共享一个特定的资源,第五个com端口.
当他们向第5个共享发送命令时,每个线程必须等到命令完成后再继续.
我遵循Dan的编码示例(谢谢!)并尝试形成原型测试代码.
这个SEEMS工作.
我很感激对代码的严格审查,看看我是否正朝着正确的方向前进.
抱歉,如果我之前没有使用线程,我就不会解释这个问题.处理共享资源对我来说是新的.另外我只是想了解Stackoverflow的工作方式!
非常感谢
最佳答案 使用资源和锁的共享实例的简化解决方案.
Public Class Resource
Public Function Read() As String
Return "result"
End Function
End Class
Public Class ResourceUser
Private Shared resourceLock As New Object
Private Shared r As New Resource()
Public Function Read()
Dim res As String
SyncLock resourceLock
res = r.Read()
End SyncLock
Return res
End Function
End Class
用法示例:
Sub Main()
Dim t1 As New Threading.Thread(AddressOf DoSomethingWithResourceUser)
Dim t2 As New Threading.Thread(AddressOf DoSomethingWithResourceUser)
t1.Start()
t2.Start()
End Sub
Private Sub DoSomethingWithResourceUser()
Dim ru As New ResourceUser()
ru.Read()
End Sub