| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > Многопоточность |
| Автор: DubrovinAV 20.5.2008, 19:04 |
| Запущено несколько потоков. Можно как-то отловить возникновение тупиковой ситуации(не предотвратить)? И в случае возникновения убить эти потоки. если да, то |
| Автор: kosmonaFFFt 20.5.2008, 19:19 |
| Сейчас я тебе это написать не могу, но помню что видел в книге Таненбаума способ, как можно вычислить тупиковую ситуацию с помощью графа, содержащего в себе все процессы, и все ресурсы, которые они используют совместно. И был там алгоритм как это все сделать. Либо сам найди Таненбаума и почитай, либо я могу пару страниц где про это написано отсканить и выслать. |
| Автор: DubrovinAV 20.5.2008, 19:24 |
| Тоненбаум есть, счас поищу |
| Автор: DubrovinAV 20.5.2008, 20:09 | ||
| вопрос: как по определенному условию завершить потоки, созданные CreateThread()? вот такой псевдо код:
|
| Автор: Rififi 20.5.2008, 20:18 | ||
создать эвент и отслеживать его в потоке |
| Автор: DubrovinAV 20.5.2008, 22:15 |
| Извиняюсь, а можно пример? |
| Автор: Lazin 20.5.2008, 22:47 |
в случае дедлока это не поможет я применяю следующий метод, там где это возможно конечно... в Wait ф-ях указываю не бесконечный, а достаточно большой таймаут (10-15сек), если он истек - бросаю исключение конечно, иногда время ожидания может быть любым и тут мой способ не сработает... |
| Автор: Rififi 20.5.2008, 23:20 | ||
| Lazin, судя по приведённому выше коду, ему ожидание вообще не нужно.
|
| Автор: DubrovinAV 21.5.2008, 07:03 |
| спасибо будем пробовать |
| Автор: DubrovinAV 21.5.2008, 14:20 |
| Rififi, сделал как Вы описали. Но программа не завершается(как будто while-ы еще работают, хотя программа из них выходит). Как это исправить(что бы программа завершалась)? |
| Автор: DubrovinAV 21.5.2008, 16:58 |
| Проблема решена |