私はコードの一部が悪いのかを調べることになって、私はトラブル解読を抱えている部分がスレッドに「参加する」ことは何を意味しますか?私のクラスのために
// joining a thread blocks until that thread finishes
a.join();
b.join();
ですよスレッドをロックと同じスレッドに参加していますか?この課題のポイントは、あなたはスレッドをロック解除したままにしておくべきではないと思うからです。
私はコードの一部が悪いのかを調べることになって、私はトラブル解読を抱えている部分がスレッドに「参加する」ことは何を意味しますか?私のクラスのために
// joining a thread blocks until that thread finishes
a.join();
b.join();
ですよスレッドをロックと同じスレッドに参加していますか?この課題のポイントは、あなたはスレッドをロック解除したままにしておくべきではないと思うからです。
これは、あるスレッドが別のスレッドの完了を待つ方法です。
join
の素敵なユースケースがある - main()
機能/スレッドがスレッドを作成し、新しく作成されたスレッドも停止し、完了するまでに作成されたスレッドのために(join
を使用して)待つと、単純に終了していない例えば言います!
ここには、一般的なスレッド管理と特にスレッド結合のnice explanationがあります。 code snippetsには、join
の使用例がいくつかあり、使用しないとどうなりますか?
このコメントは本当にすべてを言います。スレッドに参加すると、スレッドが完了するまで待機することを意味します。つまり、別のスレッドが完了するまで現在のスレッドをブロックします。
スレッドを2つの別個の実行スレッドに「フォークする」と考えてみましょう。次に、結合は逆です - それはこれらの2つの別々のスレッドが一緒に結合するところです(親だけがそこから続きます)。
スレッドに参加するとは、そのスレッドがライブになるまで待つことを意味します。スレッドが終了すると、join()
を呼び出すスレッドは実行を継続します。したがって、上記の例では、a.join()
とb.join()
を呼び出すスレッド(おそらくメインスレッド)は、両方のスレッドa
とb
(その順番で)が終了してからb.join()
のコードを実行し続けるまで待機します。
説明のための本当に良いリンクです! –
すばらしいリンク、ありがとうございます! – Dimesio