pthread を学習中に問題が発生しました。よくわかりません。最初にコードを投稿します
リーリーsleep(1)をコメントアウトすると無限待ちに陥ります。これを追加すると(個人的には、メインスレッドの信号の前に別のスレッドがすでにウェイクアップを待機していることを確認するためだと思います)、通常どおりログ文を2つ出力して終了できます。この現象の原因としては、スレッドが cond_wait によりスリープ状態に陥ったためと考えられますが、スリープ後に cond を通知するだけでスリープ状態から復帰することはできるのでしょうか?ネットで調べてみましたが、具体的に書いた記事は見つかりませんでした。アドバイスをいただければ幸いです。または、cond について、スレッド A が最初に cond_signal を呼び出し、次に B が cond_wait を呼び出したと仮定して、B を起動できるかどうか確認してください。
女神的闺蜜爱上我2017-06-30 09:58:48
目覚めることはできません。pthread_cond_signal() 関数は、指定された条件変数 cond で ブロックされているスレッドの少なくとも 1 つをブロック解除します (cond でブロックされているスレッドが あれば)。死ね