убить через определенное время

Я работаю с VS2005 C ++ и совершенно новый для него.

У меня есть цикл, который создает несколько потоков, используя следующее утверждение —

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

Я хочу завершить все темы через определенное время (скажем, 5 минут). Как у меня есть таймер, который убивает все темы после этого времени?

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]);
}

Во всяком случае, я не знаю, как использовать pthread под VS 2005 =)

Да, один важный момент — чтобы быть убитым, ваши темы должны достичь точки отмены. Некоторые функции POSIX могут быть точками отмены, но лучше вызывать pthread_testcancel () в вашем потоке (так как они работают около минут, я думаю, что это какой-то цикл, просто проверяйте каждую итерацию)

0

Другие решения


По вопросам рекламы [email protected]