問題タブ [pthread-join]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - pthread_createによって作成された子スレッドでメインスレッドを呼び出す方法は?
pthread_create を使用して、要求された http の子スレッドを作成しました。データを取得した後、メイン スレッドを呼び出して UI の更新を行います。
そのために使える3つの機能とは?
私の混乱を解決してくれる心優しい人はいますか?たくさんの感謝!
c - Pthread C で結合しますか?
テキストをバイナリ ファイルに自動保存する関数と、バイナリ ファイルから印刷する関数を含むバイナリ ファイルにテキストを保存するコードを書いています。pthread ロックと結合を組み込む必要があります。私たちは与えられました
グローバル変数として、インストラクターはpthreadまたはmutexが実際に何をするかについて話しませんでしたが、私はそれについて混乱しています. また、共有変数が変更または読み取られるたびにロックを使用する必要があることも理解しています (私の場合はバイナリ ファイルです)。しかし、ファイルの最後で pthread_join を使用することになっていますが、それが何をするのか、どの引数が使用されるのかわかりません。私はミューテックスとautosavethreadが閉じられているか、それに沿ったものになっていると推測していますが、それを書く方法がわかりません。誰でも私の理解を深めることができますか?
c - pthread_join() が呼び出されないのはなぜですか?
私は C でのマルチスレッド処理にまったく慣れていないので、このクライアント側コードの一部について意見をいただければ幸いです (簡単にするために不要な部分は削除されています)。
クライアント/サーバー プログラミングに精通している方は、POSIX スレッドの使用以外に、ユーザー入力の処理とサーバーへの読み取りと書き込みに関して、クライアント コードに異常は何もないことがわかるはずです。読み取りと書き込みに別のスレッドを使用することにしました。それ以外の場合、クライアントは何かを書き、サーバーが応答するのを待ってから、もう一度何かを書く必要があります。
main() の最後で pthread_join() メソッドを使用します。これらの関数は、読み取り (th_r) スレッドと書き込み (th_w) スレッドが終了し、使用するリソースを放棄するまで待機することになっています。私が抱えている問題は、これらのメソッドが明らかに呼び出されないことです。
クライアントを起動すると、すぐに「hello1」に到達しますが、クライアントまたはサーバーのいずれかが通信ストリームを終了すると、「hello2」も「hello3」も表示されません。つまり、どちらにも到達しないことを意味します。
誰かが私が欠けているものに光を当てることができますか?
multithreading - pthread_join() と pthread_exit() を使用する必要性
このトピックについては以前にも質問がありましたが、pthread_join() の使用法についてはまだよくわかりません。
メインスレッドに参加せずにスレッドが存在する場合、リソースがクリーンアップされないことをどこかで読みました。私たちが話しているリソースは何ですか?これらのリソースが呼び出しスレッドのスタックに存在する場合、呼び出しスレッドが存在するときにそれらはクリアされませんか? pthread_join() は、ヒープに存在するリソースをクリーンアップするのに役立つと思いますか? また、pthread_exit() を使用する利点は何ですか?
c - pthread_join の成功後に main() が終了しない
pthread を開始し、後でこのスレッドが終了するのを待ってから戻るプログラムがあります。コードは次のようなものです。
プログラムは、次のように出力しますjoin result: 0
。したがって、結合が機能し、tが終了します。それにもかかわらず、プログラムは実行を停止しません。exit(0)
行の前にコマンド(または他の番号)を挿入した場合にのみ、強制的に停止できreturn 0
ます。
ただし、pthread_join
呼び出しで行を削除すると、プログラムは問題なく終了します。
これはどのように可能ですか?すべてのサブスレッドが結合された後、プログラムの実行が終了しない原因は何ですか?
編集: gdb が、最後の行を}
. それにもかかわらず、私は舞台裏で何が起こっているのか分かりません: