Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.05 c
15-1175683320
data
2007-04-04 14:42
2007.05.13
нужен человек для доработки сайта


15-1176406429
ArtemESC
2007-04-12 23:33
2007.05.13
Быть программером или около того...


15-1176673655
Германн
2007-04-16 01:47
2007.05.13
{$IFDEF } и {$IFNDEF}


11-1158934714
Vilko
2006-09-22 18:18
2007.05.13
Окно по форме рисунка?


2-1177508495
Key999
2007-04-25 17:41
2007.05.13
Как вывести время техпроцесса в чч:мм:сс, если оно превышает 24 ч





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский