Вниз
Скачать: 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.031 c
2-1148287944
WebSqlNeederr
2006-05-22 12:52
2006.06.11
Как разбить строку по разделителю ""


2-1148374554
Ironman83
2006-05-23 12:55
2006.06.11
Динамическое создание TEdit ов


6-1139467811
Dimich1978
2006-02-09 09:50
2006.06.11
необходимо чтобы программа работала через socks,proxy


3-1145346379
Sanych_K_A
2006-04-18 11:46
2006.06.11
Ошибка при подключении к FireBird


2-1148395534
AntonXP
2006-05-23 18:45
2006.06.11
Реализация задачи.




   Наверх