gtk中如何让另一个线程向GUI线程发送自定义消息?

fish_kun fish_kun 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
以前没做过gtk的程序,现在有这样一个需求。

linux下的一个gtk程序,它总共有两个线程,一个主线程,一个工作线程。(按照windows上的开发经验,我姑且这样描述)

工作线程一直在后台运行,它在处理完某些事情后需要告知用户(在GUI上显示相关结果)。

以前我在windows上是这样实现的,当工作线程需要告知用户一些信息时,就发送自定义消息给GUI线程,GUI线程相应的消息接收函数会根据接收到的消息来更新GUI界面。

我现在也想在gtk中实现类似于windows上面的这种设计,gtk上全是回调,本人对它的机制还不是太清楚,只是觉得它要么是select,要么就poll了一些设备文件(鼠标,键盘)来响应用户的输入,可对于这种另外一个线程发起的消息(也许应该叫事件,信号)的处理,我找来找去也没找到相应的方法,希望大家能指点一下。
...全文

相关推荐

rust_gui:学习Rust GTK。 GUI的东西

当这两者结合,我们就得到了Rust GTK,一个允许开发者用Rust语言构建高效且安全的GUI应用的框架。

陳二二

GTK4 多线程与异步

本文系统阐述了GTK4中多线程与异步机制的设计原则与实现路径:主线程独占界面操作,耗时任务交由工作线程处理;通过强制异步API(如GtkFileDialog、GdkClipboard)避免阻塞;利用GdkFrameClock统一帧调度,实现高效动画与布局更新;引入渲染线程分离绘制逻辑,提升响应性。同时揭示了X11异步错误报告的误导性——崩溃点非出错位置,需结合序列号与扩展代码定位根因,凸显异步编程的复杂性与调试挑战。

OneSea

GStreamer基础教程5:集成GUI工具

目标 本教程展示了如何在GStreamer集成一个GUI(比如:GTK+)。最基本的原则是GStreamer处理多媒体的播放而GUI处理和用户的交互。在这个教程里面,我们可以学到: 如何告诉GStreamer输出视频到一个window 如何持续的刷新GUI 在GStreamer多线程时如何保持UI的更新 一个仅发送给你订阅的消息而不是所有消息的机制 介绍 我们下面就用GTK+这样一个G...

宗而研之

GTK多线程聊天工具

例如,在这个聊天工具中,可能有一个线程专门用于接收消息,另一个线程用于发送消息,主线程则专注于更新聊天窗口和处理用户输入,保证了程序的流畅运行。

holdonmay

linux GTK 并发 多进程 3个窗口

GTK信号类似于事件驱动编程中的回调函数,当某个特定事件(如点击按钮)发生时,关联的回调函数会被调用。例如,一个窗口可能发送一个信号到其他窗口,告知它们进行某些操作。

SillyBenzhu
评论 8
收藏 已收藏
分享
返回顶部
fish_kun
Linux/Unix社区 23,224 成员 74,535 内容