微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将Windows IO完成端口HANDLE转换为自定义GSource的GLib的GPollFD?

如何解决如何将Windows IO完成端口HANDLE转换为自定义GSource的GLib的GPollFD?

我很不幸地需要在所有三个主要OS上连接nodejs的libuv和GLib的MainLoop。我需要交错libuv的主循环和GLib的maing循环,以便项目的两个部分都能快乐并在一起生活。在Unix上,这很容易,因为libuv返回一个文件描述符以进行轮询:

GSource source;
// ...
g_source_add_unix_fd (&source->source,uv_backend_fd (loop),(GIOCondition) (G_IO_IN | G_IO_OUT | G_IO_ERR));

但是,在Windows上,没有文件描述符可以轮询。在uv的loop->iocp下有一个IO完成端口HANDLE。我不确定如何从这里继续。我当时想我应该使用GLIB中的以下功能

void
g_source_add_poll (GSource *source,GPollFD *fd);

但是接下来我需要从中创建一个GPollFD,但是我不确定该怎么做或者它是否是正确的选择。欢迎任何可以帮助我进步的提示

相关链接https://github.com/romgrk/node-gtk/blob/master/src/loop.cc#L68-L75

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。