Вниз
Скачать: 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.012 c
14-68025
_Bob_
2003-06-27 14:26
2003.07.21
Забыл пароль Администраторский пароль на XP


7-68101
Римас
2003-05-10 20:33
2003.07.21
Клавиатура


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


14-68004
Ru
2003-07-01 17:39
2003.07.21
Ваша СМЕРТЬ?


6-67937
tovSuhov
2003-05-15 12:37
2003.07.21
Форматы ответов на команду LIST для FTP серверов.




   Наверх