C++ のスレッドに問題があります。
私は 2 つのスレッドを実行しています。1 つはクライアントを実行し、もう 1 つはリスナーとして機能しています。リスナー スレッドはshutdown()
、次のことだけを行うメソッドを呼び出します。
shutdown_=true;
std::cout<<shutdown_<<std::endl;
shutdown_
は揮発性として設定され、リスナー スレッドはメソッドを呼び出す唯一のスレッドであり、他のスレッドがモード ( )shutdown()
にある間のみアクセスされます。wait()
Poco synchronizedObject wait()
何らかの理由でcout
「0」が出力され続け、最初に(xcodeを使用している間)、行shutdown_=true
が何もしないという警告が表示されました。この警告は、数回のコンパイル後に消えました。
Mutex ロックを使用して、回線の前後でロックとロック解除を試みましたが、効果がありませんでした。私は関数をshutDown()
完全に削除してしまい、それを使用する代わりに、shutDown_
パブリックに変更し、次のようにリスナースレッドから直接アクセスしました:
client_->shutdown_=true
それはうまくいきます。問題が何であったのか、将来それを回避する方法がわかりません。
ありがとう、