gpt4 book ai didi

vb.net - 如何与多个线程共享一个资源(一个串口)

转载 作者:行者123 更新时间:2023-12-01 03:47:27 26 4
gpt4 key购买 nike

我目前有一个有 4 个线程的程序。

4 个线程是“工作线程”,每个线程都有一个专用串行端口来监控专用设备。所以工作线程 1 监控 Com 端口 1,线程 2 监控 Com 端口 2 等等。

所有这一切都工作正常。没有冲突。

但是,4 个工作线程也必须将命令发送到第 5 个通信端口,这是连接到可以重新启动其他设备的设备的通信链路。
IE。他们都必须共享一个特定的资源,即第 5 个 com 端口。

当他们确实向第 5 个共享发送命令时,每个线程必须等到命令完成才能继续。

我遵循了 Dan 的编码示例(谢谢!)并尝试形成原型(prototype)测试代码。
这似乎有效。

我将不胜感激对代码进行严格审查,看看我是否朝着正确的方向前进。

抱歉,如果我没有像以前使用线程那样很好地解释这一点。处理共享资源对我来说是新的。此外,我刚刚开始了解 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

关于vb.net - 如何与多个线程共享一个资源(一个串口),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25623149/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com