线程同步的设计帮助

时间:2012-09-07 22:58:15

标签: python multithreading synchronization

我正在编写一个验证设备事件的python程序。

我正在从设备的串口中连续读取一些数据。当我在设备的serail端口上写东西时,设备在serialport上写一个字符串,我必须阅读。从串口继续读取部分是在一个单独的工作线程中,我逐行读取它并将其写入线程。设备连续写入一些数据,并将事件描述写在serail端口上。

当我在设备上写东西时更具体一点,它会在设备上生成一个事件。事件的描述将写回串行端口。我必须阅读它并验证事件是否已经发生。

现在发生了什么,因为我在线程中逐行读取设备输出,当我写东西并开始读取事件desc发生时,它的输出已经消失,接下来一些其他输出线正在读。我该如何同步?

有没有人帮我设计这部分?

2 个答案:

答案 0 :(得分:0)

如果您只是使用线程进行异步IO,那么最好不要使用线程并使用select.select,或者甚至可以使用asyncore,如果你想让自己更容易。

http://docs.python.org/library/asyncore.html

答案 1 :(得分:-1)

代码段如下:

Class SerialCom:

 __init__(self,comport):

     self.comport = comport

     self.readSerialPortThread = ReadSearialPortThread(self.comport)

  def writeStringToSerialPort(someString):

     self.comport.write(someString)

  def waitfordata(someString):

    #I have to continuously read data from serial port till we someString.

来自serialport的ReadSearialPortThread数据不断读取设备信息值。当我使用writeStringToSerialPort()写入数据时,设备将一些数据输出到串口,我必须从函数waitfordata读取这些数据,以验证设备的响应。

现在发生的事情是当我写一些值并调用waitfordata()时,readSerialPortThread已经读取了所需的值,并继续读取其他一些值,如设备信息。所以我在那里失去了价值观。我想知道如何同步它。