vb.net – 如何与多个线程共享资源(串行端口)

我目前有一个包含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
点赞