Текущий архив: 2009.10.25;
Скачать: CL | DM;
ВнизБлокировка потоков Найти похожие ветки
← →
tonich (2009-08-30 18:31) [0]День добрый..
такой вопрос...
есть логгер который пишет в файл... (классик). внутри класса объявлена критическая секция...
есть приложение, которое из основного потока пишет в фаил, а так же открывает еще одни поток из которого так же пишется логи в фаил, и иногда происходит блокировка основного потока, ну просто приложение виснит, а почему не могу понять...??
дополнительно поток работает с таймаутами, то есть если он и блокирует доступ к файлу (в логере , то не надолго )
← →
Юрий Зотов © (2009-08-30 18:53) [1]> tonich (30.08.09 18:31)
У меня тоже программа виснет. Не подскажете, почему?
← →
tonich (2009-08-30 19:08) [2]))
весело
вот кусок класса логгера
procedure TLog.Log(const Sender: TObject; const LogClass: TLogClass; const LogMsg: String);
var S : String;
begin
try
FCritSection.Enter;
try
... тут происходит запись сообщения в фаил
finally
FCritSection.Leave;
end;
end;
это участок вызывается как в основном так и в дополнительном потоке...
сама секция объявлена в классе логгера
сам логгер создается в основном потоке как глобальная переменная
initialization
FLogProgramm := TLog.Create(nil);
FLogProgramm.LogFileName := GetLogFilePath;
LogDebug("<============S T A R T============>");
LogDebug("initialization global unit");
finalization
LogDebug("finalization global unit");
LogDebug("<============= E N D =============>");
if Assigned(FLogProgramm) then
FreeAndNil(FLogProgramm);
ну то то есть насколько я понимаю работу критических секций, то должно происходить примерно следующее..
если дополнительный поток пишет в фаил, то основной приостанавливается (если он конечно так же пытается писать в фаил) до тех пор пока дополнительный не освободит секцию..
← →
tonich (2009-08-30 19:10) [3]если я что-то не правильно понимаю, поправьте меня...
← →
tonich (2009-08-30 19:52) [4]
> Юрий Зотов © (30.08.09 18:53) [1]
спасибо за помощь.. )) таки нашел...
← →
turbouser © (2009-08-30 20:44) [5]
> tonich (30.08.09 19:52) [4]
Поздравляю.
Страницы: 1 вся ветка
Текущий архив: 2009.10.25;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.043 c