Является ли одновременный доступ к энергозависимым источникам данных гонкой? Хотя кажется, что это работает на практике?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Является ли одновременный доступ к энергозависимым источникам данных гонкой? Хотя кажется, что это работает на практике?

Сообщение Anonymous »

volatile global x = 0;
reader() {
while (x == 0) {}
print ("World\n");
}
writer() {
print ("Hello, ")
x = 1;
}
thread (reader);
thread (writer);

https://en.wikipedia.org/wiki/Race_cond ... operations.
Из Википедии

Точное определение гонки данных зависит от используемой формальной
модели параллелизма, но обычно оно относится к ситуация,
когда операция с памятью в одном потоке потенциально может попытаться
получить доступ к ячейке памяти в то же время, когда операция с памятью в
другом потоке записывает в эту ячейку памяти, в контексте, где
это опасно.
  • Есть хотя бы один поток, который записывает данные в x. (писатель)
  • Есть хотя бы один поток, который читает x. (читатель)
  • Не существует механизма синхронизации для доступа к x. (Оба двух потока обращаются к x без каких-либо блокировок.)
Поэтому я думаю, что приведенный выше код представляет собой гонку данных. (Очевидно, это не состояние гонки)
Я прав?
Тогда в чем смысл гонки данных, когда код является гонкой данных, но генерирует ожидаемый результат? (Мы увидим «Hello, World\n», предполагая, что процессор гарантирует, что сохранение по адресу становится видимым для всех инструкций загрузки, выданных после инструкции сохранения)
------ ----- добавлен рабочий код cpp ------------
#include
#include

volatile int x = 0;

void reader() {
while (x == 0 ) {}
std::cout

Подробнее здесь: https://stackoverflow.com/questions/718 ... to-work-in
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Считается ли незащищенное чтение из общей памяти гонкой данных и неопределенным поведением?
    Anonymous » » в форуме C++
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Проблема с доступом к источникам данных и драйверам в Wildfly 27 в Linux [перенесено]
    Anonymous » » в форуме Linux
    0 Ответы
    42 Просмотры
    Последнее сообщение Anonymous
  • Коммивояжер по всем источникам
    Anonymous » » в форуме Python
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Коммивояжер по всем источникам
    Anonymous » » в форуме Python
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Присоединяйтесь к быстро и медленно меняющимся неограниченным источникам в Apache Beam.
    Anonymous » » в форуме JAVA
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»