Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 618

/ вопрос открыт /

Здравствуйте, уважаемые эксперты!

Предположим я в потоке создаю ещё один поток с помощью win-api функции CreateThread.

Завершится ли полученный дочерний поток при завершении родительского?

И ещё, если я создаю новый поток в главном потоке (в основной части кода) и программа завершается, завершится ли дочерний поток?

Gooddy Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Gooddy (статус: 3-ий класс)
Вопрос отправлен: 3 сентября 2011, 15:21
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Вадим К

Здравствуйте, Gooddy!

Цитата:

Предположим я в потоке создаю ещё один поток с помощью win-api функции CreateThread.Предположим я в потоке создаю ещё один поток с помощью win-api функции CreateThread.

Если предыдущий поток создан этой же функцией, то хорошо, но если с помощью класса TThread - плохо. Лучше в программе не смешивать две техники до тех пор, пока не будет понимания "что происходит".

Цитата:

Завершится ли полученный дочерний поток при завершении родительского? Завершится ли полученный дочерний поток при завершении родительского?

А зачем ему завершатся? потоки принадлежат процессу. И когда последний поток завершится - процесс тоже. Сам по себе процесс не исполняется.

Цитата:

И ещё, если я создаю новый поток в главном потоке (в основной части кода) и программа завершается, завершится ли дочерний поток?И ещё, если я создаю новый поток в главном потоке (в основной части кода) и программа завершается, завершится ли дочерний поток?

А вот тут неверно поставленный вопрос. Что такое "завершилась программа"? Это когда все ее потоки остановлены. Если хотя бы один поток продолжает работать - программа работает. ("программа" равно "процесс"). Но дело в том, что главный тред по завершению работы вызывает ExitProcess (так спроектирован vcl) и это завершает все потоки.

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 3 сентября 2011, 22:58
Оценка за ответ: 5

Комментарий к оценке: Как всегда качественно и ответ для моей ситуации хороший (что потоки сами по себе не тормозят). Двойное спасибо.

Мини-форум вопроса

Мини-форум пуст.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 16 ноября 2024, 16:49
Выполнено за 0.03 сек.