2 つのスレッドと共有float
グローバルがあります。1 つのスレッドは変数への書き込みのみを行い、もう 1 つのスレッドは変数からの読み取りのみを行います。この変数へのアクセスをロックする必要がありますか? 言い換えると:
volatile float x;
void reader_thread() {
while (1) {
// Grab mutex here?
float local_x = x;
// Release mutex?
do_stuff_with_value(local_x);
}
}
void writer_thread() {
while (1) {
float local_x = get_new_value_from_somewhere();
// Grab mutex here?
x = local_x;
// Release mutex?
}
}
私の主な関心事は、float
アトミックでないのロードまたはストアが、最終的に偽の部分的に更新された値を持つようになることです。local_x
reader_thread
- これは正当な懸念事項ですか?
- ミューテックスなしで原子性を保証する別の方法はありますか?
sig_atomic_t
私の目的に十分なビットがあると仮定すると、共有変数として使用できますか?
問題の言語は、pthreads を使用する C です。