2016-09-04 37 views
1

私は現在、Gtk::TreeViewの行を非同期で更新したいので、Gtkを使ったマルチスレッドに取り組んでいます。そのため、ユーザはプログラムを使用できるようになるまで、それらを更新する関数を待つ必要はありません。バックグラウンドでそれをやるだけです。Glib :: Dispatcherの接続関数が終了するのを待つ方法は?

データを収集する更新機能を実行中のGlib::Threadを使用していますが、実際のビューを更新するGlib::Dispatcherに関数を接続しました。

これは、スレッドデータコレクタからGlib::Dispatcherを呼び出すとうまくいきますが、収集を完了した後に行のデータを収集するたびに呼び出して、Glib::Dispatcherの接続された関数を更新するだけですこの単一行は、スレッドからmy_dispatcher()を呼び出すと、接続された関数を非同期で実行しているため、完了するのを待たずに、非常に奇妙な結果につながります。

Glib::Dispatcherの接続された関数が完了するのを待つ必要があります(結合を使用するなど)が、メインスレッドをブロックしないように、別のスレッドで実行される関数を呼び出す方法はありますか?他のスレッドはそれを待っていますか?

答えて

0

私はこれで最終的に答えを見つけたと思います。私は実行をブロックするstd::condition_variableを使用して&スレッド間の通信。うまくいくように思えます。このようにとどまることを願っています:D

関連する問題