什么是Windows最好的I / O事件通知工具?
我最好的意思是…
在Windows中,异步操作由文件操作完成,而不是由描述符完成。 有几种方法可以等待文件操作异步完成。
例如,如果您想知道网络套接字上的数据何时可用,请在套接字上发出异步读取请求,并在完成时提供数据并进行检索。
在Win32中,异步操作使用OVERLAPPED
结构来包含有关未完成的IO操作的状态。
WaitForMultipleObjects
一次等待所有事件。 这具有仅能够一次等待MAXIMUM_WAIT_OBJECTS
对象的缺点(64)。 您也可以同时等待其他类型的事件(进程/线程终止,互斥,事件,信号量) ReadFileEx
和WriteFileEx
将异步过程调用 (APC)排队到调用线程和SleepEx
(或WaitFor{Single|Multiple}ObjectsEx
),并且WaitFor{Single|Multiple}ObjectsEx
为Alertable TRUE
以在每个操作完成时接收通知消息。 此方法与IO完成端口类似,但仅适用于一个线程。 Windows NT内核在内部对套接字,磁盘文件,管道等文件操作没有任何区别:所有这些选项都适用于所有文件类型。
libuv
libuv
为Unix和Windows提供了均衡的I / O,并且支持套接字,文件和管道。 它是Node.js的平台层。
更多细节在: http : //nikhilm.github.io/uvbook/introduction.html
据我所知,还没有一个。 我和一个朋友正在开发一个开源的Windows epoll实现(下面的链接),但是我们遇到了一些问题,弄清楚如何使它像Linux实现一样行事。
目前的障碍:
我会尝试回来,并更新这个职位,因为我们在项目上取得进展。
select()函数是POSIX,可用于包括“winsock.h”或“winsock2.h”的窗口。