libeio在windows上

将libeio移植到Windows需要什么?

大概一年之后,你可能想要查看的内容(你或者任何通过搜索或谷歌搜索的人)是libuv ,以前是liboio。 与已被接受的答案相反,Windows并没有像当时那样被剥夺了偶数I / O的概念,它只是在深奥知识的Windows API开发人员。 在Windows空间中,类似的概念被实现为I / O完成端口 ,所以不需要libeio版本/端口/叉/模拟器来重新实现轮子,它只需要有一个自由的外观API到底下使用IOCP的东西。

Libeio使用Windows世界中未知的unix API和unix概念。 你有的解决方案是:

  • 在Windows上使用unix抽象层:像cygwin或Windows Services for Unix 。 但即使是这些层次,运行libeio代码也会遇到困难,因为有许多与系统相关的代码是这样的:
 #if __FreeBSD__ || 定义__NetBSD__ || 定义__OpenBSD__
 #define _DIRENT_HAVE_D_TYPE / * sigh * /
 #define D_INO(de)(de) - > d_fileno
 #define D_NAMLEN(de)(de) - > d_namlen
 #elif __linux || 定义的d_ino ||  _XOPEN_SOURCE> = 600
 #define D_INO(de)(de) - > d_ino
 # 万一
  • 用像GTK + ( glib实际上), wxWidgets或Qt这样的便携式抽象库来重写libeio。 这些框架已经为低级别的例程,通信服务,I / O通道和异步队列实现了强大的API。 这些框架的开发人员已经做了很多努力来允许代码的可移植性。 你不必重新发明轮子。

当然,第二个解决方案是最好的,考虑到eio.c的相对较小的尺寸,libeio的唯一C文件。