Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.018 c
3-67665
oss
2003-06-26 11:47
2003.07.21
пользователь по умолчанию для MS SQL


8-67916
MrN
2003-03-29 19:44
2003.07.21
Open(Close)GL


6-67941
Fixxxer
2003-05-12 22:59
2003.07.21
как лучше организовать поиск?


1-67766
Dmk
2003-07-09 02:56
2003.07.21
Проблема с курсорами


14-68073
vuk
2003-07-05 16:07
2003.07.21
Блин... :-E




   Наверх