Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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.005 c
15-1229867338
Кое кто
2008-12-21 16:48
2009.02.15
Придумал свою систему разработки ПО


4-1205362998
Jolik
2008-03-13 02:03
2009.02.15
Как узнать выполняется моя функция в основной нитке...


15-1229688631
Кое кто
2008-12-19 15:10
2009.02.15
Как переводиться have got?


6-1198832452
LeoGig
2007-12-28 12:00
2009.02.15
Запрос скрипту CGI


3-1214981127
BUM
2008-07-02 10:45
2009.02.15
LookUp поле по полю Calculate = 0





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский