我有一个Windows的C程序,它使用Win32 API,主线程和另一个线程(名为ThreadRx)从串行端口(虚拟COM端口,USB)接收数据。 串行端口以“重叠”模式处理。 ThreadRx的核心是一个while循环:
$ gcc myconnect.c -lpthread && ./a.out
当我想关闭程序时,主线程以下列方式禁用ThreadRx:
while(is_ThreadRx_Enabled)
{
//issue a read operation
//wait for the event "read completed"
//feed a shared variable
//other things....
}
ExitThread(0);
现在,如果连接到串行端口的发送器不再发送数据,则读取操作被阻止,因此强制执行rxThread终止。串口上的任何后续操作都会导致错误(如果我尝试刷新串口,我会看到蓝屏!) 处理这种情况的正确方法是什么? 有没有类似“中止”功能来终止已发布的读取操作? 非常感谢! Alessio的