我是GDK / GTK的新手,但我试图让一些C代码线程安全。 (它非常大,否则我会在这里发布。) 我正在做一些压力测试,GDB因错误而停止:程序接收信号SIGABRT,中止。该程序在名为gdk_window_get_frame_clock的函数中暂停,根据GDK文档,该函数是用于同步屏幕重绘的低级函数。堆栈跟踪只显示我" 0x0 in ??"对于来电者。 有谁知道这里发生了什么,或者我可以从哪里开始搜索?我完全不知所措。
答案 0 :(得分:0)
永远不要从包含glib或gtk主循环的线程之外的其他线程中绘制任何内容。使用g_idle_add
,g_timeout_add
或基于GSource
的自定义挂钩将辅助线程中的UI更改排入队列(这些是线程安全的!)