0

pthread_create を使用して、要求された http の子スレッドを作成しました。データを取得した後、メイン スレッドを呼び出して UI の更新を行います。

pthread_detach();
pthread_exit();
pthread_join();

そのために使える3つの機能とは?

私の混乱を解決してくれる心優しい人はいますか?たくさんの感謝!

4

1 に答える 1

2

正直な答えは、上記のどれでもありません。子スレッドからメイン スレッドを呼び出す方法はありませんが、それは、実行しようとしていることができないという意味ではありません。

子スレッドは、親スレッドと同じメモリ空間を共有します。子スレッドがユーザー (UI) にメッセージを送信したいことを親に通知する方法を作成する必要があります。これにはさまざまな方法がありますが、簡単な方法は、送信したいメッセージを取得してキューに入れるだけの関数を提供することです。

メイン スレッドは、そのキューをときどきチェックしてメッセージがないかどうかを確認し、そこにあるメッセージを見つけたらそれらを取り出して UI に配置するだけで済みます。

もちろん、そのキューからのプッシュ/ポップがミューテックスロックで制御されていることを確認する必要がありますが、ユーザーへのメッセージについて話しているので、頻繁に行うべきではなく、何かを引き起こすべきではありません。実際のパフォーマンスの問題。

前述したように、これはこれを行う方法の 1 つのアイデアにすぎません。多くの方法がありますが、基本的な考え方は、スレッドが相互に通信する方法が必要だということです。

于 2014-05-30T14:58:36.087 に答える