![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
InitializeCriticalSection
GanibalLector © (2004-04-01 03:12:00)Какой тип параметра LPCRITICAL_SECTION???Что в var писать не пойму.Приму в дар исходник по этому поводу.
Спасибо.
GanibalLector (2004-04-01 18:27:00) [1]Пасибки,кстати,в Тейлоре нашел примерЧИК.
BiN (2004-04-01 12:59:00) [2]переменная FSection должна быть глобальной, общедоступной для всех синхронизируемых потоков. Грубо говоря, когда ты вызываешь EnterCriticalSection(FSection) в одном потоке, другой поток при вызове этой же функции будет бесконечно долго ожидать, когда первый поток вызовет LeaveCriticalSection(FSection). Усек?
GanibalLector (2004-04-01 12:40:00) [3]2 bin
Ну так в его коде
TCHAR g_cChars[100]; // разделяемый ресурс
CRITICAL_SECTION g_csChars; // защищает g_cChars
явное указание того,что g_cChars защищен,а у мя нет.
У мя все раздельно.Вот поэтому и спрашиваю.
И еще, FSection и st может вынести в privat???
BiN (2004-04-01 12:35:00) [4]Посмотрите,правильно ли я делаю(я думаю что нет!!!)????
правильно, только в конце DeleteCriticalSection не забудь.
У меня переменная st типа string,а не структура данных защищенная критической секцией(как у Рихтера)!!
долго смеялся :)
GanibalLector (2004-04-01 12:25:00) [5]Все равно не пойму,млин!!!
Вот из Рихтера пример(стр.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);
...
N170 (2004-04-01 10:54:00) [6]LPCRITICAL_SECTION - это указатель на выделенную (тобою) структуру CRITICAL_SECTION, только и всего
Digitman (2004-04-01 08:11:00) [7]
> Приму в дар исходник по этому поводу
Борланд тебе уже "подарил" исходник класса TCriticalSection в модуле SyncObjs. Критическая секция там инициализируется прямо в конструкторе класса. Там и смотри.
"Чего ж тебе еще надобно, старче ?" (с)