2

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

それはうまくいきます。問題が何であったのか、将来それを回避する方法がわかりません。

ありがとう、

4

1 に答える 1