問題タブ [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.

0 投票する
4 に答える
143 参照

java - スレッドは、結合メソッドが先にあることをどのように認識しますか

以下は私のサンプルコードです。a.start()呼び出したときにスレッドを作成し、すぐに「実行」を出力する必要があります。しかし、なぜ「開始」を20回印刷した後に呼び出されるのですか。

run()スレッド「a」は、すぐに呼び出す必要がないことをどのように判断しますか。

出力:

スレッドの動作について少し混乱しています。

私の意見では、メソッドが呼び出される前"run"に印刷される"begin"ため、前に印刷する必要join()があり、結合時にスレッド「a」と呼ばれるメソッドは実行を終了している必要があり、その時点で結合を呼び出すことは役に立たないはずです。

0 投票する
0 に答える
340 参照

c - pthread_t id が 0 に変更されたため、セグメンテーション違反 pthread_join が発生しました

pthread で C プログラムを書いています。スレッドを開始して実行した後、説明できない理由で、2 つの pthread のいずれかの値がバックグラウンドで 0 に変更されます。私のマシンでは、この問題はすでに

Cコードは次のとおりです。

私の機能ロックとロック解除は次のようになります。

pthread ID が突然変更されるのはなぜですか?

0 投票する
1 に答える
1264 参照

pthreads - pthread_join と pthread_mutex_lock の違いは何ですか?

次のコードはこのサイトから取得したもので、ミューテックスの使用方法を示しています。pthread_join と pthread_mutex_lock の両方を実装しています。

上記のコードをそのまま実行したところ、次の結果が得られました。

カウンター値: 1

カウンター値: 2

しかし、2 回目の実行では、「pthread_mutex_lock( &mutex1 );」を削除しました。および「pthread_mutex_unlock( &mutex1 );」. コードをコンパイルして実行しましたが、同じ結果が得られました。

今、私を混乱させているのは、ミューテックスロックがなくても同じことができるのに(pthread_joinを使用して)、なぜ上記のコードでミューテックスロックが使用されているのですか?pthread_join が最初のスレッドが終了するまで別のスレッドの実行を妨げている場合、他のスレッドがカウンター値にアクセスするのをすでに防いでいると思います。pthread_mutex_lock の目的は何ですか?

0 投票する
1 に答える
351 参照

c - pthread_join がコメント化されるとどうなりますか?

これはRemzi Chapter 27 のコードです。いろいろ試してみると、なぜ実行時に A が 2 回出力されるのか知りたくなりました。join ステートメントを含めていないため、これが発生する理由はわかっています。結合をスキップすると、なぜこれが発生するのでしょうか?

私の出力:

0 投票する
1 に答える
1024 参照

c++ - キャンセルポイントなしで pthread をキャンセルする方法

rpc サーバーであるアプリケーションにサードパーティ ライブラリ (dcerpc) を使用しています。サードパーティ関数が名前空間 third にあるとしましょう。

着信リクエストをリッスンするために、スレッドで third::listen を呼び出します。

「3番目」は、このリッスンを中断してスレッドを適切に終了するためのすべてのメカニズムを提供しますが、機能しないか、正しい方法で実行しません。最初にライブラリ ツール (デモ サンプル、メーリング リスト、ソース コードを参照して理解する...) を使ってすべてを試しましたが、成功しませんでした。

そこで私は別の方法を試します: リッスンしているスレッドを激しく殺します。しかし、 third::listen にはキャンセルポイントがないと思います。

したがって、このコード(上記のリッスン関数で third::listen をシミュレートします):

出力します:

および pthread_join(thread, 0) ブロック (キャンセル ポイントがないためロジック)。

私の質問:このスレッドを殺す方法!!

シグナルを試してみましたが、スレッドだけでなくプロセス全体が停止します。

私の最後の試みは、リスニングを専用のフォーク プロセスに分離することですが、私のプロジェクトのコンテキストでは、フォークするのは本当に面倒です (それは別の話です)。

助けてくれてありがとう。

ニコラス。