私は現在、Gtk::TreeView
の行を非同期で更新したいので、Gtkを使ったマルチスレッドに取り組んでいます。そのため、ユーザはプログラムを使用できるようになるまで、それらを更新する関数を待つ必要はありません。バックグラウンドでそれをやるだけです。Glib :: Dispatcherの接続関数が終了するのを待つ方法は?
データを収集する更新機能を実行中のGlib::Thread
を使用していますが、実際のビューを更新するGlib::Dispatcher
に関数を接続しました。
これは、スレッドデータコレクタからGlib::Dispatcher
を呼び出すとうまくいきますが、収集を完了した後に行のデータを収集するたびに呼び出して、Glib::Dispatcher
の接続された関数を更新するだけですこの単一行は、スレッドからmy_dispatcher()
を呼び出すと、接続された関数を非同期で実行しているため、完了するのを待たずに、非常に奇妙な結果につながります。
Glib::Dispatcher
の接続された関数が完了するのを待つ必要があります(結合を使用するなど)が、メインスレッドをブロックしないように、別のスレッドで実行される関数を呼び出す方法はありますか?他のスレッドはそれを待っていますか?