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

Вниз

Как обнаружить взаимоблокировки   Найти похожие ветки 

 
Smithson ©   (2003-07-09 10:58) [0]

Нужна помощь по методике!
Есть многопоточное приложение. Для блокировок объектов общего доступа использую критические секции. Спустя какое-то время (три-четыре часа) приложение встает на взаимоблокировки (видимо, косяк с алгоритмом). Подскажите, как это поймать из отладчика (в идеале из отладчика среды)?
Поскольку вылезает не сразу, точки останова смысла не имеют.
По моему разумению, ожидание освобождения критической секции выполняет система - как узнать состояние программы до провала в эти ожидания после того, как они уже наступили?


 
Poirot ©   (2003-07-09 10:59) [1]

а Объекты синхронизации юзать не пробовали сами, не полагаясь на систему? Всётаки в ручную будет надёжнее...


 
Smithson ©   (2003-07-09 11:00) [2]

Что это изменит?


 
Smithson ©   (2003-07-09 11:01) [3]

Единственный вариант, который я пока вижу - это жестокое протоколирование в файл обращений к критическим секциям. Но очень не хочется. Есть еще идеи?


 
MBo ©   (2003-07-09 11:02) [4]

>Спустя какое-то время (три-четыре часа)
Время примерно постоянно? уверен, что дело в блокировках, а не в исчерпани ресурсов вследствие незакрытия или чего-то подобного?

Кое-что о синхронизации, сырой перевод:
http://mbo88.narod.ru/threads.htm


 
Digitman ©   (2003-07-09 11:14) [5]


> Есть еще идеи?


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

достаточно при инициализации перехватить глобально для тек.процесса вызовы EnterCriticalSection()/LeaveCriticalSection(), а в процедуре перехвата (перед передачей управления оригин.функции) анализировать ID секции , ID код.потока, обращающегося к ней и вести программный триггер состояния блокировки секции.


 
Smithson ©   (2003-07-09 11:24) [6]

Уверен, ресурсы я контролирую, а главное, потоки "засыпают" - падает нагрузка на процессор.


 
Smithson ©   (2003-07-09 11:25) [7]

То есть ничего более простого (штатного) нет?



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

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

Наверх




Память: 0.48 MB
Время: 0.012 c
1-67897
PONTIY
2003-07-08 08:55
2003.07.21
Как создать экземпляр формы с параметром?


4-68131
den
2003-05-18 12:51
2003.07.21
Работа с битмапами


3-67664
tpl
2003-06-26 12:08
2003.07.21
Помогите: Что это за ошибка и из-за чего?


14-68029
McSimm
2003-07-04 17:37
2003.07.21
Вот, раздразнили темой


3-67698
SCORPION ZP
2003-06-24 11:43
2003.07.21
Реструктурирование таблиц dBASE программным путем