2016-06-21 5 views

答えて

0

他のスレッドがその変数に書き込んでいない限り、同じ変数を読み込んだり同じメソッドを同時に呼び出している複数のスレッドには、通常はパフォーマンス上のペナルティはありません。

スレッドが別のスレッドが読み取っている変数を書き込むことができる場合、注意深く処理する必要のある並行性制御の問題があります。

ただし、1つのスレッドが書き込む変数が他のスレッドが読み取る変数にメモリ内で隣接する場合、特定の種類のハードウェアで例外が発生することがあります。この場合、RAMから読み出されてキャッシュされるメモリの単位である同じ「キャッシュライン」内に存在する可能性があります。その場合、ハードウェアは読者とライターの間に競合が存在する可能性があります。同じ場所にアクセスしていません。

「googlable term for this」は「false sharing」です。

0

単に「セッション間の静的変数を使用する」には本質的にパフォーマンスの影響はありません。しかし、代わりにあなたが見る必要があるいとこの懸念があります。

複数のユーザーセッションから読み書きしているフィールドには同時にアクセスします。これは、オブジェクトをスレッドセーフでにする必要があることを意味します(これは、これらの静的フィールドに書き込む場合に必要になります)。 このは、パフォーマンスに直接影響する可能性のあるものです。

関連する問題