【问题标题】:Using glib without calling g_main_loop_run?在不调用 g_main_loop_run 的情况下使用 glib?
【发布时间】:2013-06-28 00:25:44
【问题描述】:

在不调用 g_main_loop_run 的情况下使用(部分)GLib 是否正确?如果是这样,如何确定我可以像这样使用 GLib 的哪些部分?

我最感兴趣的是(https://developer.gnome.org/glib/2.34/index.html所指):

  1. GLib 数据类型;
  2. GLib 实用程序。

常识告诉我应该没有任何东西需要 GMainLoop(可能是 Timers 除外?),但我是一个完整的 GLib 新手,并且在需要 GMainLoop 时不知何故在文档中没有找到任何明确的声明什么时候不。

从“GLib 核心应用程序支持”部分我想使用消息记录,但不确定它与主循环的交互。

对于那些想知道为什么的人,我使用 FUSE/osxfuse,它已经有它的主循环,我不确定解构它并集成到 GMainLoop 中是否容易。

另外,我欢迎其他 C 库建议。浏览 GLib 文档我很喜欢它,但我对它试图成为一个框架而不是一组库感到不安。

【问题讨论】:

  • 您当然可以在不使用事件循环部分的情况下使用 glib 的大部分功能。如您所料,依赖于事件循环的部分是超时、I/O 通道监视等...哈希表和树、Unicode 帮助程序、进程生成、内存分配,都将在没有循环的情况下工作。我不会写答案,因为我没有任何魔术列表供您参考,哪些依赖于事件循环,哪些不依赖。顺便说一句,我认为您应该将 Glib 视为大量真正有用的库,而不是您似乎厌倦的巨大的集成框架。
  • 谢谢!您的评论和我的回答一样好。

标签: c glib


【解决方案1】:

很少的 GLib 代码需要主循环,例如计时器是使用系统的正常时间戳实现的。

需要主循环的代码会引用它,例如IO Channels。即使这样,您也可以看到可以使用带或不带主循环的 IO 通道,这是您的选择。

【讨论】:

    猜你喜欢
    • 2012-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-03
    • 1970-01-01
    • 2015-11-27
    • 2018-08-03
    相关资源
    最近更新 更多