Главная страница
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.017 c
6-67948
Renegate
2003-05-16 09:07
2003.07.21
Вывод запушенных процессов.


14-67965
mipstudio
2003-06-30 14:47
2003.07.21
Есть идея написать игру...


1-67845
Kiril
2003-07-07 19:59
2003.07.21
Вопрос по синхронизации потоков...


1-67884
DarkReign
2003-07-02 19:46
2003.07.21
Как отобразить перекрытую MDI форму?


3-67735
Sceptik
2003-06-29 14:03
2003.07.21
Как удалить все записи из таблицы ????