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

Вниз

InitializeCriticalSection   Найти похожие ветки 

 
GanibalLector ©   (2004-04-01 03:12) [0]

Какой тип параметра  LPCRITICAL_SECTION???Что в var писать не пойму.Приму в дар исходник по этому поводу.
Спасибо.


 
Digitman ©   (2004-04-01 08:11) [1]


> Приму в дар исходник по этому поводу


Борланд тебе уже "подарил" исходник класса TCriticalSection в модуле SyncObjs. Критическая секция там инициализируется прямо в конструкторе класса. Там и смотри.
"Чего ж тебе еще надобно, старче ?" (с)


 
N170   (2004-04-01 10:54) [2]

LPCRITICAL_SECTION - это указатель на выделенную (тобою) структуру CRITICAL_SECTION, только и всего


 
GanibalLector ©   (2004-04-01 12:25) [3]

Все равно не пойму,млин!!!

Вот из Рихтера пример(стр.205):
TCHAR g_cChars[100]; // разделяемый ресурс
CRITICAL_SECTION g_csChars; // защищает g_cChars

Вот и мне нужно защитить предположим переменную типа string.
Посмотрите,правильно ли я делаю(я думаю что нет!!!)????
У меня переменная  st типа string,а не структура данных защищенная критической секцией(как у Рихтера)!!

var
 Form1: TForm1;
 FSection: TRTLCriticalSection;
 st:string;

InitializeCriticalSection(FSection);// до создания потоков

// в потоке
...
EnterCriticalSection(FSection);
st:=st+"1";
LeaveCriticalSection(FSection);
...


 
BiN ©   (2004-04-01 12:35) [4]

Посмотрите,правильно ли я делаю(я думаю что нет!!!)????

правильно, только в конце DeleteCriticalSection не забудь.

У меня переменная  st типа string,а не структура данных защищенная критической секцией(как у Рихтера)!!

долго смеялся :)


 
GanibalLector ©   (2004-04-01 12:40) [5]

2 bin
Ну так в его коде
TCHAR g_cChars[100]; // разделяемый ресурс
CRITICAL_SECTION g_csChars; // защищает g_cChars
явное указание того,что g_cChars защищен,а у мя нет.
У мя все раздельно.Вот поэтому и спрашиваю.

И еще, FSection и st может вынести в privat???


 
BiN ©   (2004-04-01 12:59) [6]

переменная FSection должна быть глобальной, общедоступной для всех синхронизируемых потоков. Грубо говоря, когда ты вызываешь EnterCriticalSection(FSection) в одном потоке, другой поток при вызове этой же функции будет бесконечно долго ожидать, когда первый поток вызовет LeaveCriticalSection(FSection). Усек?


 
GanibalLector ©   (2004-04-01 18:27) [7]

Пасибки,кстати,в Тейлоре нашел примерЧИК.



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

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

Наверх




Память: 0.48 MB
Время: 0.032 c
1-1083328634
Newbie
2004-04-30 16:37
2004.05.16
Про DLL


14-1082731753
Nick-From
2004-04-23 18:49
2004.05.16
Сбор информации из internet


6-1080431713
МЕМ
2004-03-28 03:55
2004.05.16
Fastnet


3-1082097103
BPK
2004-04-16 10:31
2004.05.16
Stored procedure (MSSQL2000): произвольный набор параметров


3-1082298316
chainik
2004-04-18 18:25
2004.05.16
Копирование данных из одной базы Access в другую