bluez glib编程 --- main loop(主循环)

主循环是事件驱动编程的核心概念,广泛应用于图形用户界面(GUI)和其他需要持续处理事件的应用中。它的主要作用是不断地检查和处理事件,如用户输入、网络数据、定时器等。

在一个典型的主循环中,应用程序会做以下工作:

  • 检查是否有任何事件发生(如鼠标点击、键盘输入)。
  • 处理这些事件并执行相应的回调函数。
  • 如果没有事件发生,则应用程序通常会等待(通常是阻塞操作),直到有事件需要处理。

在 Linux 环境下,许多 GUI 库如 GTK 和 Qt 都实现了自己的主循环。例如,GTK 使用 GMainLoop 进行事件处理。GLib 提供了对 D-Bus 的支持,将 D-Bus 消息处理集成到 GMainLoop 中。

 

所以

复制代码
#include <glib.h>
#include <gio/gio.h>

int main(int argc, char *argv[]) {
    GMainLoop *loop = g_main_loop_new(NULL, FALSE);
    GDBusConnection *connection;
    GError *error = NULL;

    connection = g_bus_get_sync(G_BUS_TYPE_SESSION, NULL, &error);
    if (error != NULL) {
        g_printerr("Error connecting to D-Bus: %s\n", error->message);
        g_error_free(error);
        return 1;
    }

    // 设置 D-Bus 信号处理等

    g_main_loop_run(loop); // 调用 g_main_loop_quit(loop) 可退出循环

    // 清理资源
    g_main_loop_unref(loop);
    g_object_unref(connection);

    return 0;
}
复制代码

 

posted @   流水灯  阅读(63)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
历史上的今天:
2018-07-22 Modbus
点击右上角即可分享
微信分享提示