如何中断在Windows上select呼叫?

我知道这可能是一个基本的问题,但我想听到最好的方法来实现它。

所以这个问题。 我有一个驱动程序线程使用一个调用来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上设置较短的超时时间,如果超时则循环。 或者你可以发送一个简单的数据包到被选中的套接字,使其唤醒。