Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.10.25;
Скачать: [xml.tar.bz2];

Вниз

Блокировка потоков   Найти похожие ветки 

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.052 c
4-1220075003
DAS
2008-08-30 09:43
2009.10.25
Как сохранить Html страницу в *.txt зная его URL


2-1251902073
Merlin_88
2009-09-02 18:34
2009.10.25
Помогите с Классами


6-1207567582
Real
2008-04-07 15:26
2009.10.25
FTP индикация закачки больших файлов


2-1251091182
Interesting
2009-08-24 09:19
2009.10.25
Как возвести число в степень?


2-1251107999
ford
2009-08-24 13:59
2009.10.25
AnsiString





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский