Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.20;
Скачать: CL | DM;

Вниз

Использование Ansi строк в многопоточном приложении...   Найти похожие ветки 

 
Zelius ©   (2005-02-03 16:14) [0]

Вопрос заключается в том, нужно ли синхронизировать доступ только для чтения к строковым переменным и константам типа AnsiString? Ведь насколько я понимаю, при чтении такой переменной происходит просто инкремент счетчика, а при изменении его декримент и копирование данных. Что может произойти при параллельном доступе к одной и той же переменной?


 
Digitman ©   (2005-02-03 16:19) [1]


> происходит просто инкремент счетчика


а счетчик, по-твоему, не переменная ?
одит поток пытается инкрементировать сч-к, другой в то же время - декрементировать ... переменная этаничем не защищена от одновременного доступа .. бардак-с получается ! как думаешь ?


 
Zelius ©   (2005-02-03 16:42) [2]

Если глянуть в исходники, то:
..........
MOV     ECX,[EDX-skew].StrRec.refCnt
INC     ECX
JLE     @@sourceDone { literal assignment -> jump taken }
LOCK INC     [EDX-skew].StrRec.refCnt
...........
так вот LOCK вроде блокирует изменение данной переменной другими потоками. Я плохо разбираюсь в асме, поэтому и решил спросить у народа.


 
Digitman ©   (2005-02-03 17:03) [3]

ну если LOCK , тогда одновременная модиф-ция сч-ка не страшна

но ! при модификации сч-ка одним потоком одновременной состояния сч-ка другим потоком не гарантирует достоверный результат .. а, значит, при недостоверном результате возможны последующие коллизии

тонкостей здесь масса, но если говорить кратко, то защита такой переменной (тем или иным способом) от мультипоточного доступа (если предполагается и ее запись и чтение) НУЖНА.


 
Zelius ©   (2005-02-03 18:13) [4]

В том то и дело, что я говорю только про чтение! С записью все и так понятно. Кстати, борланд нигде не пишет, что доступ на чтение к AnsiString не threadsafe...



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

Текущий архив: 2005.02.20;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.042 c
14-1106805956
Внук
2005-01-27 09:05
2005.02.20
Нобелевские соискатели


6-1100914344
webmaster
2004-11-20 04:32
2005.02.20
GO CS !


14-1106780098
VID
2005-01-27 01:54
2005.02.20
Токио (или Tokyo) - Индира Ганди.mp3


1-1107760505
Homa_Programer
2005-02-07 10:15
2005.02.20
инсталлятор


1-1107260551
Vetal
2005-02-01 15:22
2005.02.20
Посоветуйте Grid и DBGrid пожалуйста