Increment()
{
int i = getFromDb(); // get count for a customer from db
};
そして、これがインクリメントますインスタンスクラスである(毎回お客様 - インスタンスオブジェクト - 買い物をする)、これは、可変スレッドセーフ?各スレッドが独自のスタックなどを取得するため、ローカル変数はスレッドセーフであると聞きます。
また、この変数は共有状態であると考えていますか?思考部に欠けているのは、この変数がさまざまな顧客オブジェクト(例えば、John、Paulなど)と連携しているため、スレッドセーフですが、これは欠陥があり、並行プログラミングの経験がないことです。これはとても素朴に聞こえますが、一般的な同期コーディングのような同時コーディングでは多くの経験がありません。
編集:関数呼び出しgetFromDb()は質問の一部ではなく、値が関数から割り当てられたことを示す単なる呼び出しであるため、誰もそのスレッドの安全性を推測するとは思わないDBからのデータ。 :)
EDIT 2:getFromDbのスレッドの安全性は、読み取り操作のみを行うため、保証されています。
+1(完全なものではないメソッドとイテレータブロックの説明。静的クラスとスレッドセーフは、個人的に把握するのが最も簡単なコンセプトです。) – dotnetdev
IMHO、リストされた例外でも、ローカル変数メソッドの呼び出しごとに固有の_still_です。つまり、スレッドの安全でない方法であっても、メソッドのコンテキスト外でアクセスすることはできますが、同じメソッドへの別の呼び出しのコンテキストでは、_same_ローカル変数に対してスレッドセーフです。 –