2011-01-28 3 views

答えて

2

読み取りはスレッドセーフです。 nIDに書き込むと問題になります。

0

これは何も変更しません。どのようにスレッドセーフなのか、スレッドセーフではないのでしょうか?

+0

申し訳ありません、その値を変更できるスレッドセーフなメンバ関数があるとします。 – bl23

+1

@ bl23:この場合、 '_nID'を' volatile'とマークして、読み込みスレッドが古い値をキャッシュしないようにすることができます。 – LukeH

+1

@ bl23:あなたの前提はあなた自身の質問です。読者のうちの1人がそうでなければ、「スレッドセーフ」であると言うのは全く意味がありません。スレッドの安全性は、個々の部品ではなく、*システム全体の特性です*。スレッドセーフであることを明確に定義できますか? –

3

「スレッドセーフ」という言葉の意味によって異なります。たとえば、「スレッドセーフ」とは、「この変数へのすべての書き込みは、すべてのスレッドで一貫した順序で行われることが保証されます」、「いいえ、スレッドセーフ」という意味です。 「この変数のテストとセットで、結果が単一スレッドのデータ依存性ルールと一貫していることが保証されている」という場合は、「スレッドセーフ」ではありません。

"スレッドセーフ"とは何を意味するのかを慎重に定義し、すべてのライターと、それらのリーダーおよびライターにデータ依存性のあるすべてのコードを表示してから、意味のある意見を述べることができます。この質問には、意味のある質問に答えることさえできるほど十分な情報はありません。

関連する問題