我有一个程序(用C写的,目前在Mac OS X 10.8.4上运行)每秒模拟世界和更新世界状态多次。
在启动该程序创建它创建了一个简单的GTK窗口和调用后台线程gtk_main
。
世界上每个状态更新(在主线程)的时间后,我想窗口反映这种变化。 我的第一个方法是世界上被更新后,简单地更新GTK控件,但因为这是在不同的线程的事情打破了相当乱七八糟。
是否有某种机制,在主线程可以在图形线程更新一些状态,然后排队,提示图形线程重绘的事件吗? 即
void draw() {
// This can only be called from the graphics thread.
gtk_label_set(GTK_LABEL(label1), "some state");
}
// This causes draw() to be called on the graphics thread.
gtk_please_redraw_this_thing_on_the_graphics_thread();
有没有办法做到这一点? 或者说,它覆盖任何教程?