問題タブ [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_join 後のセグメンテーション違反
cを使用してubuntuで複数のスレッドを使用してpiの値を計算しようとしています。私は、pthread_create と pthread_join が入力として取得する必要のある変数や、タイプ「void」の処理方法について完全に理解していません。問題の原因を特定するためにコードにいくつかの printf を配置しましたが、問題は main() の最後の「for ループ」の「pthread_join」にあるようです。
これは私のコードです:
}
これは、ターミナルで取得したログです。
c - デタッチされた pthread がメモリ リークを引き起こす
切断されていない pthread を実行しているプロセスを終了すると、既知のメモリ リークが発生します。ただし、スレッドを切り離すことは解決策ではないようです。次の最小限の例を考えてみましょう。
無限ループを持つ切り離されたスレッドが作成され、プロセスはすぐに終了します。によるとpthread_detach(3)
、プロセス全体が終了すると、スレッドのリソースは自動的にシステムに解放されます。ただし、それは明らかに起こっていることではありません。
私は心配する必要がありますか?実際のプログラムにはいくつかのブロッキング スレッドがあるため、最小限の例と同様に、それらを実際に使用することはできませんpthread_join()
。直接 ing するpthread_cancel()
のではなく、電話する必要がありますか?exit()
c++ - ループ内のスレッドの結合 - 変換エラー
だから私は for ループでスレッドを結合しようとしていますが、エラーが発生しています:
「pthread_t* {aka long unsigned int*}」から「pthread_t {aka long unsigned int}」への無効な変換。
コードは以下のとおりです。どんな助けでも大歓迎です! 前もって感謝します!
c++ - pthread_exit() からどれくらい後に pthread_join() が成功すると期待できますか?
私は、pthread
(完全な開示: これは OS コース用です) の機能を複製するユーザーレベルのスレッド ライブラリを作成する任務を負っています。ただし、スレッドが既に終了しているときにどのようpthread_join()
にpthread_exit()
対話するかについては不明です。
特に、マニュアルページには次のように記載されています。
pthread_join() 関数は、thread で指定されたスレッドが終了するのを待ちます。そのスレッドがすでに終了している場合、 pthread_join() はすぐに戻ります。
これは、何百万ものスレッドを作成しても、それらの結果が 1 回の結合で利用できるという保証ですか? それ以外の場合、結果はどのくらい保持されると期待できますか?
私はそれを実装する方法についてのアドバイスを探しているわけではありません (それが最も楽しいことです!)、私は飛び込む前に動作を突き止めようとしています.
c - pthread_join:warning: ポインタから異なるサイズの整数にキャストしますか?
私のコード
コードをコンパイルすると、次の 2 つの警告が表示されます。
のマニュアルページを読みましたpthread_join
:
私の理解によると、存在ステータス(int型)はtret
私のコードに格納されているので、(int)
に変換するために使用しvoid *
ますint
が、上記の警告はスローされます。だから、私の質問は次のとおりです。
警告をクリアするためにコードを変更するにはどうすればよいですか?
multithreading - プロセッサ アフィニティを設定できません
このコードを 8 コア クラスターに実装しようとしています。それぞれ 4 コアの 2 つのソケットがあります。関数を使用して 8 つのスレッドを作成し、アフィニティを設定しようとしていpthread_attr_setaffinity_np
ます。しかし、VTunes でのパフォーマンスを見ると、3969 個の奇妙なスレッドが作成されていることがわかります。理由と方法がわかりません!何よりも、アフィニティが設定されていないとき (OS スレッドのスケジューリング) とまったく同じパフォーマンスが得られます。誰かがこの問題のデバッグを手伝ってくれますか? 私のコードは完全に正常に動作していますが、スレッドを制御できません! 前もって感謝します。
- - - - - - - - - - - - - - - - - - - コード - - - - - - --------------------------------
c++ - スレッドが結合可能なスレッドかどうかはどうすればわかりますか?
私はマルチスレッドを初めて使用し、スレッドを切り離さずにいつスレッドに参加する必要があるかを正確に知る必要があります。スレッドが「参加する必要がある」ことを知るために考慮する必要がある要因は何ですか?
c - C スレッド (pthread_create) が期待どおりに機能しない
複数のスレッド (以下の例では 10 個) を作成し、それぞれに関数を実行させたいと考えています。
これが私のコードです:
実行中に次のような出力が期待されていました。
しかし、代わりに次のような出力が得られます。
プログラムを再実行するたびに、出力がわずかに変化します。id と value が繰り返され、パターンが不規則に見えます。
何が起こっている?子スレッドも for ループでスレッドを作成しているため、繰り返しが発生していますか? もしそうなら、私が読んだ pthread_create の例の多くで、人々は N 回反復して N 個のスレッドを作成するループを使用しているように見えたので、私は混乱しています (上記とまったく同じです)。したがって、上記のコードでは、1 つのマスター スレッドが N 個の子スレッドを作成すると仮定しましたか? 私が間違っている?前もって感謝します。
java - CORBA で JNI を使用する際のスレッド化の問題
JNI を使用する Java アプリケーションがあります。Javaのメインスレッドを使用して、pthreadなどを作成しています。ネイティブの t1 (pthread_create を使用)。
IDL と CORBA を使用して Java アプリケーションと対話する UI もあります。UI から Java で Close() を呼び出すと、ネイティブでスレッド t1 の pthread_join() を実行しようとします。しかし、この pthread_join() は、メイン スレッド以外の別のスレッドで参加しようとしているため、失敗しました。ここで CORBA スレッドがメイン スレッドに切り替わっていないのではないかと疑っています。phread_join() の実行方法を教えてください。