|
Вопрос # 5 618/ вопрос открыт / |
|
Здравствуйте, уважаемые эксперты!
Предположим я в потоке создаю ещё один поток с помощью win-api функции CreateThread.
Завершится ли полученный дочерний поток при завершении родительского?
И ещё, если я создаю новый поток в главном потоке (в основной части кода) и программа завершается, завершится ли дочерний поток?
|
Вопрос задал: Gooddy (статус: 3-ий класс)
Вопрос отправлен: 3 сентября 2011, 15:21
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Вадим К
Здравствуйте, Gooddy!
Цитата:
Предположим я в потоке создаю ещё один поток с помощью win-api функции CreateThread.Предположим я в потоке создаю ещё один поток с помощью win-api функции CreateThread.
Если предыдущий поток создан этой же функцией, то хорошо, но если с помощью класса TThread - плохо. Лучше в программе не смешивать две техники до тех пор, пока не будет понимания "что происходит".
Цитата:
Завершится ли полученный дочерний поток при завершении родительского? Завершится ли полученный дочерний поток при завершении родительского?
А зачем ему завершатся? потоки принадлежат процессу. И когда последний поток завершится - процесс тоже. Сам по себе процесс не исполняется.
Цитата:
И ещё, если я создаю новый поток в главном потоке (в основной части кода) и программа завершается, завершится ли дочерний поток?И ещё, если я создаю новый поток в главном потоке (в основной части кода) и программа завершается, завершится ли дочерний поток?
А вот тут неверно поставленный вопрос. Что такое "завершилась программа"? Это когда все ее потоки остановлены. Если хотя бы один поток продолжает работать - программа работает. ("программа" равно "процесс"). Но дело в том, что главный тред по завершению работы вызывает ExitProcess (так спроектирован vcl) и это завершает все потоки.
|
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 3 сентября 2011, 22:58
Оценка за ответ: 5
Комментарий к оценке: Как всегда качественно и ответ для моей ситуации хороший (что потоки сами по себе не тормозят). Двойное спасибо.
|
Мини-форум вопроса
Мини-форум пуст.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|