std::atomic<bool>とcompare_exchange_strongでdeadlockしてしまう。Serviceを読んで理解し、同意したものとみなします。スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。登録してこのコミュニティに参加するどなたでも質問していただけますどなたでも回答していただけます最もよい回答には賛成票が入り、最上位に上がりますホーム質問タグユーザーstd::atomic<bool>とcompare_exchange_strongでdeadlockしてしまう。false->trueに変換する)コードを書いたのですが、何回か繰り返し実行するとdeadlock?してしまうこと場合があることに気づきました。Communityで現象が発生しています。現象が発生するコードです。結局は何もしないのと同じである。compare_exchange_strongにより、falseが返り値となり、whileが継続する。loopで待ち続ける。書き換えられるため、trueに戻す。これにより、ほかのthreadがa_boolをtrueに戻すまで待つ。以下のように書き換えると問題が発生しなくなります。loopで問題が発生していることになります。Lockする可能性があります。個の銅バッジなるほど、両方のスレッドがa_bool.load(std::memory_order_acquire)で同じ値を得て、片方だけが値を変更してスレッドを終了したとき残りのスレッドは値をwhileループで値を書き換えることができないため、deadlockに陥るわけですね。|回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。