【发布时间】:2010-06-30 10:56:15
【问题描述】:
是否可以在一个父-多子进程模型中为 IPC 使用 glib 事件循环和 glib io 通道?
父母和孩子必须能够互相发送“命令”。
你能给我一些教程或例子吗?
【问题讨论】:
是否可以在一个父-多子进程模型中为 IPC 使用 glib 事件循环和 glib io 通道?
父母和孩子必须能够互相发送“命令”。
你能给我一些教程或例子吗?
【问题讨论】:
是的。但它本身并不包含完整的 IPC 解决方案,并且可能无法与现有的每个 IPC 实现完美兼容。对于父母和孩子,我猜你的意思是服务器和客户端?通常,您打开某种网络连接或创建通信管道并获得文件描述符(即使您使用隐藏它的高级库)。您可以将此文件描述符传递给 glib 并获取回调,然后数据可供读取(或连接关闭)。一些流行的 IPC 方法,如 CORBA 和 DBUS 已经具有 glib 集成,因此您甚至不需要担心文件描述符等。 glib 事件循环描述为here。与直接使用 poll() 相比,它可能看起来非常复杂,但另一方面它非常便携。
基本用法是使用 g_source_new() 创建源并使用 g_source_attach() 将其添加到主上下文中,然后使用 g_source_add_poll() 将文件描述符添加到源中。
如果您还没有决定使用 glib,您可能想查看 libevent 与 glib 做同样的事情,但(恕我直言)更容易使用。它在同时处理 1000 多个客户端方面也明显更好(至少在 Linux 中,其他操作系统甚至可能不支持)。但另一方面,它的便携性不高,可能只能在相当兼容 posix 的系统上运行。
【讨论】: