2010-12-27 5 views
2

C++のスレッドに問題があります。セッターとスレッド

2つのスレッドが実行されています.1つはクライアントを実行し、もう1つはリスナーとして機能します。

shutdown_=true; 
std::cout<<shutdown_<<std::endl; 

shutdown_などの揮発性設定し、リスナスレッドはshutdown()メソッドを呼び出すだけであり、それが唯一の他のスレッド中にアクセスされる:リスナー・スレッドは、以下のんがshutdown()メソッドを呼び出しwait()モード(Poco synchronizedObject wait())です。

なんらかの理由で、coutは印刷を「0」に保ち、最初は(xcodeを使用している間)、shutdown_=trueは何もしないという警告が表示されます。この警告は、コンパイル後に消えました。

私はMutexロックを使用して、行の前後でロックとアンロックを試みましたが、何の効果もありませんでした。 私は完全にし、代わりにそれを使用しての機能shutDown()を削除することになった次のように、私はパブリックであることをshutDown_を変更し、リスナースレッドから直接アクセス:

client_->shutdown_=true 

正常に動作します。私は問題が何だったのか、そしてそれを将来どのように避けるべきか分かりません。

ありがとう、

+6

コンパイラの警告はあまり意味がありません...あなたは誤ってシャットダウンしていなかったのでしょうか?== true; ?さらに多くのコードを投稿すると役立つかもしれません。 –

+0

別のメモに、どのように私は解決として質問をマークするのですか? – Matan

+0

正解の左側にあるチェックマークをクリックします。 –

答えて

0

あなたはshutdown_ member volatileを定義したとお伝えしました。継承した基本変数を隠してしまったのでしょうか?

関連する問題