【问题标题】:pthread kill after a certain time durationpthread 在一定时间后杀死
【发布时间】:2014-08-19 17:38:15
【问题描述】:

我正在使用 VS2005 C++,我是全新的。

我有一个使用以下语句创建多个线程的循环 -

rc = pthread_create(&thread[i], NULL, &Function, (void *)threadID);

我想在一段时间后(比如 5 分钟)终止所有线程。我如何有一个计时器在此持续时间后杀死所有线程?

【问题讨论】:

  • 你(认为你)为什么要这样做?杀死线程应该留给真正绝望的情况。
  • 如何在 Windows 操作系统中使用 POSIX 线程?
  • 杀死除主线程之外的线程是要求的一部分..
  • 如果您需要线程退出,您通常希望向它们发送某种信号,它们会通过正常退出来做出反应。
  • 如果您的需求是用如此低级的术语编写的,您需要就需求进行交谈。 “他们”不只是希望工作线程在一段时间后停止吗?

标签: c++ multithreading pthreads visual-studio-2005 kill


【解决方案1】:

我相信,类似的东西:

pthread_t tid[thread_num] = {};
for(size_t i = 0 ; i < threads_num; ++i){
    pthread_create(&tid[i], NULL, func, arg);
}
sleep(300);
for(size_t i = 0 ; i < threads_num; ++i){
    pthread_cancel(tid[i]);
}

反正我不知道在VS 2005下怎么用pthread =)

是的,重要的一点 - 要被杀死,您的线程应该达到取消点。一些 POSIX 函数可能是取消点,但最好在你的线程中调用 pthread_testcancel() (因为它们工作大约几分钟,我认为这是某种循环,只需检查每次迭代)

【讨论】:

  • 睡眠功能只是暂停程序吧?我希望线程继续运行到指定时间
  • 你可以在另一个单独的线程中启动你的线程,它只是等待超时
猜你喜欢
  • 1970-01-01
  • 2012-08-15
  • 1970-01-01
  • 1970-01-01
  • 2011-08-29
  • 2014-05-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-06
相关资源
最近更新 更多