pthread在一段时间后杀死

时间:2014-08-19 17:38:16

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

我正在使用VS2005 C ++,而且我很新。

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

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

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

1 个答案:

答案 0 :(得分:0)

我相信,就像那样:

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()(因为它们工作大约几分钟,我认为它是某种循环,只需检查每次迭代)