Вниз
Скачать: CL | DM;

многопоточность и общие переменные   Найти похожие ветки 

 
Vir ©   (2006-05-01 15:01) [0]

Из нескольких потоков есть доступ на чтение/запись к глобальным пременных типа boolean, integer. Есть ли необходимость при доступе к переменным окружать их обектами синхронизации (Mutex или CriticalSection)?


 
Eraser ©   (2006-05-01 15:28) [1]


> Vir ©   (01.05.06 15:01)


> Есть ли необходимость при доступе к переменным окружать
> их обектами синхронизации (Mutex или CriticalSection)?

однобайтные переменные (boolean например) не надо, остальные - надо.


 
DrPass ©   (2006-05-01 16:22) [2]


> однобайтные переменные (boolean например) не надо, остальные
> - надо.

:-) Трехбайтные тоже не надо. Можно подумать, процессоры проектируют технические садисты, и при переключении контекстов у текущего потока выдергивают управление "на половине операции".


 
Eraser ©   (2006-05-01 16:52) [3]


> DrPass ©   (01.05.06 16:22) [2]

ну да ) вроде бы выравневание сейчас по 4 байта идёт, так что теоретически и 4 байтные не надо синхронизировать, хотя всё зависит от того, какие операции опроисходят при считывании/записи..


 
Leonid Troyanovsky ©   (2006-05-01 20:08) [4]


> Vir ©   (01.05.06 15:01)

> Из нескольких потоков есть доступ на чтение/запись к глобальным
> пременных типа boolean, integer. Есть ли необходимость при


Достаточно InterlockedExchange.

--
Regards, LVT.


 
Shaman_Naydak   (2006-05-01 21:32) [5]

Чтение синхронизировать не надо. (до 4 байт).
Запись синхронизировать надо. Ибо если уж работаете в нескольких потоках, то закладывайтесь на честную параллельность...
А какую именно, действительно зависит от характера взаимодействия..
InterlockedExchange для простейшего случая дейтвительно самое оно!


 
evvcom ©   (2006-05-02 08:43) [6]


> Чтение синхронизировать не надо. (до 4 байт).
> Запись синхронизировать надо.

в одном потоке:
if i <> 0 then Result := a div i; // только чтение
в другом:
EnterCriticalSection(...);
i := 0; // запись
LeaveCriticalSection(...);

Так что ли надо? Нетрудно догадаться, каков будет результат. :)
Все зависит от ситуации.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.026 c
5-1132898095
DimaBr
2005-11-25 08:54
2006.06.11
Вызов редактора суб-компонента


2-1148213292
@gent
2006-05-21 16:08
2006.06.11
как распечатать форму как альбомный лист ?


8-1134483031
calmterror
2005-12-13 17:10
2006.06.11
Визуализация звука


2-1148563083
Piero
2006-05-25 17:18
2006.06.11
как работать с ini файлами?


8-1136870881
Tim_spot
2006-01-10 08:28
2006.06.11
Подскажите пожалуйста по mpeg2




   Наверх