|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Апр 13, 2004 00:26:34 Приветствую Вас, уважаемые эксперты! У меня есть к вам вопрос (платформа: Windows 2000 Pro (SP3)): Диспетчер задач показывает, что у процесса, порожденного моей программой (обычное Win32-Application), есть два непонятных (лишних???) потока!!! Например: в то время, когда у процесса должен быть только один поток, диспетчер задач показывает, их там целых три! После того, как моя программа запускает второй (служебный) поток, диспетчер задач показывает, что потоков стало четыре... Кто ни будь из вас, может сказать: нормально ли это и чем занимаются эти дополнительные потоки (если их мне подсадила ось)? Заранее благодарен Вам за ваши ответы! |
|
|
Дата: Апр 13, 2004 03:15:37 windbg .attach тут_pid_твоего_приложения ~*K |
|
|
Дата: Апр 13, 2004 03:26:54 rst Добрый ты :) Я уже давно это заметил. Доброта из тебя так и прет, гм :) |
|
|
Дата: Апр 13, 2004 04:19:55 · Поправил: Quantum . |
|
|
Дата: Апр 13, 2004 11:20:13 А твоя прога на чем написана? Может эти потоки принадлежат run-time library? |
|
|
Дата: Апр 13, 2004 11:35:19 volodya rst А чем тут я не добр - я дал человеку набор нажатий клавиш, чтоб посмотреть стеки всех потоков в приложении. По-моему ему именно это и нужно -) Кстати ssx в тему сказал - если у тебя аппликуха на бейсике написано - это не удивительно. Т.к. бейсик любит к примеру простой цикл в отдельном потоке запускать. |
|
|
Дата: Апр 13, 2004 12:08:38 · Поправил: RobinFood Даже если аппликуха написана на чистом API и без глюков, "левые" потоки все равно могут создаваться. Например, тот же GetOpenFileName плодит их штук 5, и за собой не закрывает. Наверняка и другие такие же функции есть... Что касается WinDbg, то можно его не аттачить, а сразу запустить прогу под ним. Потом sxe ctи отладчик будет останавливаться при каждом создании потока. Хотя и за совет "~ *K" тоже спасибо :) |
|
|
Дата: Апр 13, 2004 22:45:27 · Поправил: Oleg_SK Моя программа работает нормально. Это не она создает эти непонятные потоки. По вашей реакции я понял, что происходит что-то необычное, т.е. эти потоки не следствие работы оси. Спасибо, теперь буду копать это дело серьезно SoftICE'ом. ssx Моя программка написана на ASM(MASM32)+Win32 API. rst Спасибо за совет. volodya Привет. Сейчас читаю книгу, которую ты мне посоветовал (Джеффри РИХТЕР, "Создание эффективных Win32-приложений"). Классная вещь! Хотя я серьезно не занимался C++, вся инфа в ней воспринимается без проблем. Спасибо тебе за рекомендацию! RobinFood Даже если аппликуха написана на чистом API и без глюков, "левые" потоки все равно могут создаваться. Например, тот же GetOpenFileName плодит их штук 5, и за собой не закрывает. Наверняка и другие такие же функции есть... Интересная информация. Я этого не знал. |
|
|
Дата: Апр 13, 2004 23:46:25 Все, похоже, я нашел, откуда взялись два лишних потока. Они появляются после вызова API-функции: sndPlaySound, например: invoke sndPlaySound, IDC_WAV8, SND_RESOURCE + SND_ASYNC + SND_NOWAIT . Всем спасибо. |
|
|
Дата: Апр 13, 2004 23:57:34 Oleg_SK SND_ASYNC То бишь асинхронное проигрывание! MCI создаёт отдельный поток для слежения за асинхронным воспроизведением. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.092 |