我正在使用VS2005 C ++,而且我很新。
我有一个使用以下语句创建多个线程的循环 -
rc = pthread_create(&thread[i], NULL, &Function, (void *)threadID);
我想在一段时间后(例如5分钟)终止所有线程。如何在此持续时间后杀死所有线程的计时器?
答案 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()(因为它们工作大约几分钟,我认为它是某种循环,只需检查每次迭代)