我知道这可能是一个基本的问题,但我想听到最好的方法来实现它。
所以这个问题。 我有一个驱动程序线程使用一个调用来select,我有一个GUI线程,有时需要中断select通过写入一些文件描述符在同一进程(GUI FD或东西)。 我在UNIX中使用pipe道,但我没有经验的Windows套接字,所以我不知道什么样的FD我应该使用。 示例非常感谢,但不是必需的)。
谢谢。
select()
不是在Windows下实现异步I / O的最佳select()
。 不幸的是,窗口上的select()
调用仅适用于套接字句柄,而不适用于管道或fie句柄。
你应该看看重叠的I / O。
通过在重叠结构中使用事件,可以使其接近select()
。 套接字上的任何事件都会触发一个事件,您可以使用WaitForMultipleObjects()
等待。 现在,您的GUI线程可以通过设置使用CreateEvent()
调用创建的特定(单独的)事件来发信号通知I / O线程。
你可以在select上设置较短的超时时间,如果超时则循环。 或者你可以发送一个简单的数据包到被选中的套接字,使其唤醒。