Форум: "Прочее";
Текущий архив: 2009.02.15;
Скачать: [xml.tar.bz2];
ВнизКорректность считывания переменной из потоков Найти похожие ветки
← →
Добежал (2008-12-10 17:23) [0]Допустим, имеем некоторый флаг boolean и его значение устанавливается где-то в других потоках, когда устанавливается/меняется - неизвестно.
Корректно ли в потоке напрямую считывать значение этой переменной? Аля:if bPlaySound then PlaySound;
Не может ли это каким-либо образом нарушить корректность присвоения переменной в другом потоке (который возможно устанавливает значение как раз в момент проверки условия)? По идее не должно, но что-то вдруг подумалось, мало ли что...
← →
Сергей М. © (2008-12-10 17:26) [1]Корректно.
← →
Добежал (2008-12-17 13:30) [2]спасибо, так и думал.... Впрочем до сих пор сомнения остались ;))))
← →
Ega23 © (2008-12-17 13:32) [3]Читать можно без проблем. Скажем, это идеологически и эстетически не очень хорошо, но - можно. А вот писать уже нельзя.
← →
Alkid (2008-12-17 13:58) [4]
> Ega23 © (17.12.08 13:32) [3]
Гм. На самом деле, если операция присвоения булевского значения атомарна - то можно. Да и вообще всё сильно зависит от задачи.
← →
clickmaker © (2008-12-17 14:09) [5]авторы языков Си и С# придумали спецслово volatile. Для переменных, измененяемых разными потоками, чтобы предотвратить вредную в данном случае оптимизацию
← →
Добежал (2008-12-17 16:30) [6]
> Читать можно без проблем. Скажем, это идеологически и эстетически
> не очень хорошо, но - можн
ну почему нехорошо. Просто не хочется считывание переменной также обращать в критическую секцию.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2009.02.15;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.006 c