3

私は Python を使用していますが、これは glib の他のバインディングにも当てはまる可能性があることに注意してください。

を介して複数のソケット接続をセットアップするクラスglib.io_add_watch()と、 と呼ばれるコールバック メソッドがありますfoo()。さらに、glib.idle_add()というメソッドへのコールバックがありますbar()foo()None を含む任意の値にできる要素のリスト (クラス メンバー) を作成または更新します。 bar()上記のリストから None 項目を削除します。事実上、それは物事をきれいにします。

スレッドごとに一度に呼び出されるコールバックは 1 つだけであるという glib の承認者はいますか?

このコードfoo()をスレッド 1 とbar()スレッド 2 で実行すると、競合状態が発生します。単純なミューテックスでこれを解決できると思いますが、これを行うより効率的な方法はありますか?

4

1 に答える 1

5

g_io_add_watchを介して追加されたコールバックは、追加g_add_idle元のスレッドに関係なく、メインループのスレッドで実行されます。

于 2012-07-31T09:14:09.070 に答える