ホームページ  >  に質問  >  本文

Linux - pthread の cond の問題

pthread を学習中に問題が発生しました。よくわかりません。最初にコードを投稿します

リーリー

sleep(1)をコメントアウトすると無限待ちに陥ります。これを追加すると(個人的には、メインスレッドの信号の前に別のスレッドがすでにウェイクアップを待機していることを確認するためだと思います)、通常どおりログ文を2つ出力して終了できます。この現象の原因としては、スレッドが cond_wait によりスリープ状態に陥ったためと考えられますが、スリープ後に cond を通知するだけでスリープ状態から復帰することはできるのでしょうか?ネットで調べてみましたが、具体的に書いた記事は見つかりませんでした。アドバイスをいただければ幸いです。または、cond について、スレッド A が最初に cond_signal を呼び出し、次に B が cond_wait を呼び出したと仮定して、B を起動できるかどうか確認してください。

PHP中文网PHP中文网2691日前846

全員に返信(1)返信します

  • 女神的闺蜜爱上我

    女神的闺蜜爱上我2017-06-30 09:58:48

    pthread_cond_signal() 関数は、指定された条件変数 cond で ブロックされているスレッドの少なくとも 1 つをブロック解除します (cond でブロックされているスレッドが あれば)。死ね

    目覚めることはできません。

    返事
    0
  • キャンセル返事