| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > WaitForSingleObject |
| Автор: ASMatic 9.1.2010, 18:44 |
| Есть поток, который создает множество потоков и записывает их хендлы в список. другой поток в цикле перебирает список и когда в списке есть хендл он пытается дождатся его завершения...Некоторые потоки(большинство) завершаются и обрабатываются нормально. Но некоторые остаются в "неопознаном" состоянии. В менеджере потоков в VisualStudio "висят" интересующие меня потоки. Но location у них странный,т.е. я не знаючто это значит: 0 0x0000146c Worker Thread TestThread _unlock_fhandle Normal 0 на этот момент в списке хендлы есть и WaitForSingleObject возвращает WAIT_TIMEOUT ну а если переключится на поток 0x0000146с - висит на выходе! с ф-ии _unlock_fhandle, т.е. на самой фигурной дужке.... Чем может быть вызвано такое поведение? |
| Автор: Earnest 9.1.2010, 18:46 |
| Так может потоки сами по себе завершаться не хотят? Каждый поток должен сам свою функцию потока завершить. Ждет их кто-то или нет- им по барабану. |
| Автор: ASMatic 9.1.2010, 18:52 |
| хммм, вроде как должны выходить, но идея! буду смотреть в ту сторону. Просто смущает его текущая локация, еще и неизвесная) |
| Автор: ASMatic 9.1.2010, 22:43 |
| Earnest, я как бы и сам понимал, но в случае что все ветви работают по одному коду и по всех ветвлениях выводят логи совсем не подозревал что где то может быть маленькая и незаметная getchar(^), которую я еще когда не пользовал многопоточность поставил для теста ну и естественно она была именно там где раже всего бывает eip. GremlinProg, да! Вы правы, это та команда которая будет следущая при получении управления потоком) Со стеком - первая мысль была такой, но студия показывала много чего : ntdll!0x..... kernel32!0x.... но вот о getchar() - ни байта. Поэтому решено было по совету Earnest пересмотреть код более тщательно и особо придать внимания циклам. Спасибо всем, задача решена! п.с. мож кто знает как в студию, для дебага подключить символы какой нить либы? |