Я работаю с VS2005 C ++ и совершенно новый для него.
У меня есть цикл, который создает несколько потоков, используя следующее утверждение —
rc = pthread_create(&thread[i], NULL, &Function, (void *)threadID);
Я хочу завершить все темы через определенное время (скажем, 5 минут). Как у меня есть таймер, который убивает все темы после этого времени?
Я полагаю, что-то подобное
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]);
}
Во всяком случае, я не знаю, как использовать pthread под VS 2005 =)
Да, один важный момент — чтобы быть убитым, ваши темы должны достичь точки отмены. Некоторые функции POSIX могут быть точками отмены, но лучше вызывать pthread_testcancel () в вашем потоке (так как они работают около минут, я думаю, что это какой-то цикл, просто проверяйте каждую итерацию)