是否可以为IPC使用glib事件循环?

时间:2010-06-23 09:52:14

标签: ipc glib

是否可以在一个父级中使用glib事件循环和glib io通道进行IPC - 许多子进程模型?

家长和孩子必须能够互相发送'命令'。

你能指点我一些教程或例子吗?

1 个答案:

答案 0 :(得分:3)

是。但它本身并不包含完整的IPC解决方案,并且可能与那里的每个IPC实现都不完全兼容。有了父母和孩子,我想你的意思是服务器和客户?通常,您打开某种网络连接或创建用于通信的管道,并获得文件描述符(即使您使用隐藏此文件的高级库)。您可以将此文件描述符传递给glib并获得回调,然后数据可用于读取(或连接已关闭)。一些流行的IPC方法,如CORBADBUS已经有glib集成,所以你甚至不需要打扰文件描述符等。 glib事件循环描述为here。与直接使用poll()相比,它看起来可能完全复杂,但另一方面它非常便携。

基本用法是使用g_source_new()创建一个源,并使用g_source_attach()将其添加到主上下文中,然后使用g_source_add_poll()将文件描述符添加到源中。

如果你还没有决定使用glib,你可能想要查看libevent与glib相同但是(恕我直言)更容易使用。它在处理1000多个同时客户方面也明显更好(至少在Linux中,其他操作系统甚至可能不支持)。但另一方面,它不那么便携,可能只适用于相当兼容posix的系统。