Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.06.2012, 19:13   #1
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию Завершение потока

Всем привет, короткий вопрос. Как обстоят дела с потоком если он был вызван и программа была закрыта до его завершения? Система заботится об этом в таком случае? Момент таков, поток у меня должен работать на протяжение всего времени пока программа работает. Все манипулирования над *.exe приложением произвожу из под *.dll так как исходников *.exe у меня нет.

Тестовая программа:
Код:
class ThreadEx
{
public:
 ThreadEx();
 virtual ~ThreadEx();
 static unsigned __stdcall Timer(void *lpParam);
};

ThreadEx::ThreadEx() 
{
};

ThreadEx::~ThreadEx() 
};

unsigned __stdcall ThreadEx::Timer(void *lpParam)
{
 DWORD dwStart = GetTickCount(); int Delay;

 while (true)
 {
  if ((Delay = GetTickCount() - dwStart) >= 10000) 
   break;
  else printf("[%d]\n", Delay);
  Sleep(1000);
 }
 _endthreadex(0); return 0;
};

int main(void)
{	
 ThreadEx Thread;
 HANDLE hThread; UINT ThreadId;
 hThread = (HANDLE)_beginthreadex(NULL, 0, &Thread.Timer, NULL, 0, &ThreadId); 
 CloseHandle(hThread);
 std::cin.get();
 return 0;
}

Последний раз редактировалось coNsept; 20.06.2012 в 19:20.
coNsept вне форума Ответить с цитированием
Старый 20.06.2012, 19:27   #2
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

Цитата:
Как обстоят дела с потоком если он был вызван и программа была закрыта до его завершения? Система заботится об этом в таком случае?
естественно он завершится
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 20.06.2012, 19:36   #3
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

Ну да, но эт потом никак плохо не влияет если такое будет происходить часто?
coNsept вне форума Ответить с цитированием
Старый 20.06.2012, 19:42   #4
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2coNsept
даже не знаю, как ответить. что значит, "плохо не влияет"?
да и неясно, что ты подразумеваешь под "программа была закрыта". не понимаю программа может либо завершиться (сама), либо быть прервана. естественно в последнем случае возможна потеря несохраненных данных, например.
если под "закрытием программы" ты подразумеваешь закрытие окна, и хочешь, чтоб все потоки доработали - окно можно спрятать, а потокам дать сигнал на сохранение данных и завершение работы
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance

Последний раз редактировалось pproger; 20.06.2012 в 19:45.
pproger вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Принудительное завершение потока не работает :(! TEED! Работа с сетью в Delphi 3 06.06.2012 14:34
Должно быть 3 потока. А диспетчер задач показывает, что потока создано 2 BEL9ILLI Общие вопросы Delphi 3 06.12.2011 20:26
Работа и корректное завершение потока TThread в любой ситуации... spamer Общие вопросы Delphi 9 03.04.2011 20:27
C# BackgroundWorker - завершение работы потока Lastsummer Помощь студентам 2 16.03.2011 18:04
Как отследить завершение выполнения потока TThread? Трик Общие вопросы Delphi 3 24.10.2007 14:55