1

世界をシミュレートし、毎秒複数回世界の状態を更新するプログラム (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();

これを行う方法はありますか?またはそれをカバーするチュートリアルはありますか?

4

1 に答える 1