我有一个应用程序(实际上是另一个应用程序的插件),它管理线程与外部传感器设备通信。外部传感器向应用程序发送事件,但应用程序也可能向传感器发送动作。有几种类型的装置,每一种都有独特的特性(温度、压力等),需要特殊的编码。与传感器设备的所有通信都是通过IP进行的。在
在应用程序中,我为传感器的每个实例创建一个线程。这是一个代码示例self.phThreadDict[phDevId] = tempsensor(self, phDevId, phIpAddr, phIpPort, phSerial, self.triggerDict)
self.phThreadDict[phDevId].start()
在每个线程中,我为传感器发送的事件设置回调处理程序,然后在最后进入循环。在
^{pr2}$
然后,线程处理传入的事件并调用主线程,或者生成主线程的实际程序。所有这些都很有效。在
但是,有时我还需要向特定的传感器发送请求。方法是在每个线程中定义的,我从主线程调用这些方法。例如:self.phThreadDict[dev.id].writeDigitalOutput(textLine, lcdMessage)
这也可以,但我相信代码实际上是在主线程中执行的,而不是在特定于传感器的线程中执行。在
我的问题是:对于将工作传递给特定的目标线程,并让该线程执行工作,然后返回成功或失败,我有什么选择?在