必要としないシステム構築も可能セマフォから読み取る際のグローバル構造ですか?
-
06-07-2019 - |
質問
かなり基本的な質問なんでいます。
ということかしてグローバル構造体(C)のように:
struct foo {
int written_frequently1;
int read_only;
int written_frequently2;
};
そうで明確になったのであれば、多くのスレッドが読み書きが必要となるセマフォ(その他のロック) written_frequently
会員でも、読書をしなが100になるようにして下さい課題にこのstructする原子.
していくために、どのような多くのスレッドを読み取 read_only
会員にはなく、またセマフォは、structのアクセスで用いて発表します。
よって傾斜していないので、その場所の直前後には常に変更しな影響を与え read_only
会員は、複数のスレッドの読みの値がないに干渉します。でも本当のところはわからないけど。)
[編集:どちらにでも転んでいたのだったもののこの質問をよく把握するためには 非常に具体的には いうことを意味する。当然、あまり気にしなかったgrokすべての問題に関する初めての質問です。もちろん、さまを総合的に編集して質問しま跡すべてのこれらの素晴らしい応答を行った。んでい
struct bar {
char written_frequently1[LONGISH_LEN];
char read_only[LONGISH_LEN];
char written_frequently2[LONGISH_LEN];
};
の大きな課題に聞いてですが、このデータがstructでは全く影響を受けその他のstruct、かな影響します。
このたint値を代入し、そのために書き込みが原子は、本当にただのレッドヘする]
解決 10
ありがとうございましたの答者(すべての応答とする。
すなものとなるのではなく、むしろ
がある場合は読み取り専用のstruct場合には、この数値が設定し、任意のスレッドが読みたいので、そのスレッドを読みこの委員は、必要のないロック、ミューテックス、セマフォ、またはその他の並行処理で保護します。
これがtrueの場合においても多様なバックグラウンドを書き込まれます。この変数はすべて同じ構造体んでいないこと。
他のヒント
必要なものは、ミューテックスを保証動作原子.この特定の場合には、 る必要がない場合があり、ミューテックスです。 具体的には、それぞれかのスレッドに書き込みを 一つ 要素 や に、書き込みは原子 や 新しい値は独立の現在の値 他の 要素を含むそのもの、あるいは問題ありません。
例: 各複数のスレッドの更新"をlast_updated_by"変数で記録最後のスレッドが更新されます。この変数自体が原子的に更新し、エラーが発生します。
ただし、 い が必要なミューテックス証一貫性の場合、スレッド を読み込みや書き込みます 以上の要素、特にないロック、 要素 ではなく、 全体構造.
例: スレッドに新たに"日""月"に"年"の要素になります。これが起こる原子的にね別のスレッドの読み込み後の"月"単位が前の日に"ラップ(1)にすると、行使を容易にするためなど月31日です。必要がありますのでご注意くださ 名誉 のミューテックスが読み;その場で読み上の過誤、半更新します。
場合にはread_only員が実際に読み、その危険はありませんのデータの変更が不要に同期します。このデータセットのスレッドが開始。
また同期のためのデータが書き込めに関わらず、周波数です。
"読み取りのみ"はこの説明は少し的外れでは、変数は少なくとも一時で初期化されます。その場合でも必要なメモリとの初期の記述とその後の読み込みだけでなく、異なるスレッドと、それに初期化されていない値です。
者が必要とするミューテックス!
があるようで共通という誤った理解をミューテックス作家のみことになる読者なけるという仕組みが必要になる。 これは間違っているのは、 この誤解を担うバグが 非常に難しい診断.
理由は以下の通りですの一例です。
このクロックをもとに更新する毎に次のコード:
if (++seconds > 59) { // Was the time hh:mm:59?
seconds = 0; // Wrap seconds..
if (++minutes > 59) { // ..and increment minutes. Was it hh:59:59?
minutes = 0; // Wrap minutes..
if (++hours > 23) // ..and increment hours. Was it 23:59:59?
hours = 0; // Wrap hours.
}
}
コードが保護されていません、ミューテックス、別のスレッドを読むことができ hours
, minutes
, は、 seconds
変数を更新処理が進んでいます。以下に上記のコード:
[Start just before midnight] 23:59:59 [WRITER increments seconds] 23:59:60 [WRITER wraps seconds] 23:59:00 [WRITER increments minutes] 23:60:00 [WRITER wraps minutes] 23:00:00 [WRITER increments hours] 24:00:00 [WRITER wraps hours] 00:00:00
の時間が無効であるから最初の値ですので、操作 手順以降.読み手は、たとえばチェックの時計期間では見る価値があるのみならず誤りが 違法.でコードが によ に時計な 表示する に直接、クラシックソースの"ricochet"誤りが悪名がトラックです。
の固定が簡単です。
サラウンドの時計のデコード、ミューテックス、 をリーダーの機能 その またロックのミューテックス ながらそれが実行.現在のリーダーからの更新が完了しやすく、バレンタインデーには変わらないと思いますの価値観の中を読み込みます。
No.
一般的に必要なセマフォを防止を兼資源へのアクセス( int
この場合).しかしながら、 read_only
会員の読み込みだけでは変わらないと思いますと中からです。で、ご注意くださっている原子の読みが変わらない人は、必ず安全です。
かの設定 read_only
当初?
すべてのスレッドだけを読みする必要がなくなり、より快適なセマフォ.
しょうがおこれらのいずれかの論文 実践的なロックフリーなプログラミング, だ解及び理解のスニペットを提供.
私はhideの各分野の背後に背景の機能ます。の書き込み専用の分野においてはロボット.の読み取りだけを返します。
加え前の答え:
- この場合、天然の同期化パラダイムは、相互排除しないセマフォ.
- いきなミューテックスに読み取り専用の変数.
- 場合、読み込み-書き込み部分の構造の一貫性制約に一般的に必要となりま 一つ ミューテックスのための すべての そのための事業の原子.