Форум: "WinAPI";
Текущий архив: 2007.05.13;
Скачать: [xml.tar.bz2];
ВнизInteger-переменные и многозадачность... Найти похожие ветки
← →
Jolik © (2006-09-21 13:44) [0]Как то здесь на форуме обсуждалось - требуется ли контролировать доступ из разных ниток приложения к переменным типа integer. Пришли к выводу (и я сам до сих пор так считал) что это излишне, т.к. например приращение integer -переменной - атомарная операция (одна команда процессора) и прерваться не может.
Купил книжку - в ней написано, что ни фига, после загрузки переменной в регистр проца управление может быть отдано другой нитке (не совсем представляю как это может быть...) со всеми вытекающими последствиями и для изменения 32 битных переменных надо применять семейство функций InterlockedXXX.
Что думает народ по этому поводу?
← →
Сергей М. © (2006-09-21 13:51) [1]
> Jolik © (21.09.06 13:44)
InterlockedXXX исключает возможность возникновения конфликтов в мультипроцессорной среде и при использовании НТ.
← →
DVM © (2006-09-21 14:57) [2]
> Что думает народ по этому поводу?
Я думаю, что контролировать надо. Можно не беспокоиться только за boolean
Тем не менее мне так и не удалось обнаружить какие-либо проблемы при одновременном обращении к одной и той же переменной целого типа из разных потоков. Но это ничего не значит.
← →
Игорь Шевченко © (2006-09-21 15:01) [3]
> Я думаю, что контролировать надо. Можно не беспокоиться
> только за boolean
А в чем разница между Integer и Boolean в данном контексте ?
← →
Ketmar © (2006-09-21 15:37) [4]требуется. потому что многопроцессорность/HT могут сильно удивить автора, забывшего о контроле.
← →
Наиль © (2006-09-21 16:01) [5]Фраза
> после загрузки переменной в регистр проца управление может
> быть отдано другой нитке
совершено не противоречит
> т.к. например приращение integer -переменной - атомарная
> операция
т.к. помещение в регистр - это одна атомарная операция, и после неё может быть выполнена любая другая другая атомарная операция.
← →
Alex Konshin © (2006-09-22 08:14) [6]Приращение переменной в памяти не является атомарной операцией.
Атомарными подобные операции будут только при выполении соответствющей машинной инструкции с префиксом lock. Смотрите описание этой команды в руководстве по ассемблеру Intel Pentium.
Если не писать на ассемблере, то нужно использовать функции Win API Interlocked*.
Про Boolean переменные то же самое. Собственно, важно что именно делается с этими переменными.
← →
P@r@zit (2006-12-13 20:56) [7]Удалено модератором
← →
Sha © (2006-12-13 22:10) [8]Ник сам выбирал? :)
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2007.05.13;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.041 c