Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.02.15;
Скачать: CL | DM;

Вниз

Корректность считывания переменной из потоков   Найти похожие ветки 

 
Добежал   (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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
2-1231410906
EastGod
2009-01-08 13:35
2009.02.15
Альтернативные потоки файлов


2-1231239884
Alex_00h
2009-01-06 14:04
2009.02.15
Значения группе элементов в цикле


8-1176711307
WondeRu at work
2007-04-16 12:15
2009.02.15
Для начинающих: Your first MP3 Delphi player


15-1229778455
Knight
2008-12-20 16:07
2009.02.15
Turbo Delphi... что за шляпа...


2-1231250146
Семён
2009-01-06 16:55
2009.02.15
Как изменить содержимое 2-й строки ListView без Clear?