かなり基本的な質問ですが、どこにも尋ねられていません。
次のようなグローバル構造体 (C) があるとします。
struct foo {
int written_frequently1;
int read_only;
int written_frequently2;
};
written_frequently
この構造体への割り当てがアトミックであることを 100% 確信できないため、読み取りと書き込みを行うスレッドが多数ある場合は、メンバーにセマフォ (またはその他のロック) が必要であることは明らかです。.
多くのスレッドにread_only
メンバーを読み取らせ、書き込みを行わせない場合、読み取り専用の構造体アクセスにセマフォが必要ですか?
(直前と直後の場所が常に変更されているという事実がread_only
メンバーに影響を与えるべきではなく、値を読み取る複数のスレッドが互いに干渉するべきではないため、私はノーと言う傾向があります。しかし、よくわかりません. )
[編集: 私が何を意味しているのかを非常に具体的に明確にするために、この質問をもっとうまく行うべきだったことに今気づきました。当然のことながら、最初に質問したとき、関連する問題のすべてを理解できたわけではありません。もちろん、今質問を包括的に編集すると、これらの優れた回答がすべて台無しになります。私が意味したのは、次のようなものです。
struct bar {
char written_frequently1[LONGISH_LEN];
char read_only[LONGISH_LEN];
char written_frequently2[LONGISH_LEN];
};
私が尋ねた主な問題は、このデータは構造体の一部であるため、他の構造体メンバーの影響を受けているのでしょうか。
メンバーが int であり、したがって書き込みがアトミックである可能性が高いという事実は、この場合、実際には単なるニシンです。]