Главная страница
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.47 MB
Время: 0.01 c
2-1231410906
EastGod
2009-01-08 13:35
2009.02.15
Альтернативные потоки файлов


2-1209619132
FoxikM
2008-05-01 09:18
2009.02.15
Как копировать файлы с "неправильным" именем


2-1230651566
LDV
2008-12-30 18:39
2009.02.15
SetMenuItemBitmaps


2-1231149365
Iriss
2009-01-05 12:56
2009.02.15
не отображается в трее


3-1215351058
Kolan
2008-07-06 17:30
2009.02.15
LIKE в SQLite или как без него обойтись.