我有一个PERL应用程序,它启动了一个用于串行通信的线程...... 我使用lib使用Device :: SerialPort;
while($bRun)
{
print "Waiting for serial port data...";
my ($count,$msg)=$SerialPort->read(255); # will read _up to_ 255 chars
if ($count > 0)
{
#Process
}
#sleep(1);
}
但是即使在读操作期间也必须能够停止该线程。
我已经有一个方法可以将bRun设置为false,但是如果它处于读操作状态,如何解除阻塞?
非常感谢
亚历
答案 0 :(得分:0)
http://search.cpan.org/dist/Device-SerialPort/SerialPort.pm对于如何进行非阻塞I / O不是很清楚。听起来它在内部使用perl的select
来查看字符是否可用。
我之前没有编写过多线程的perl程序。你能把信号发送到另一个会中断系统调用的线程吗?
如果您只想停止线程,不要让它突破读取并执行其他操作,那应该更容易。只是正常杀死它。