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; }
标签:
bluez/dbus
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
2018-07-22 Modbus