Здравствуйте, есть ли способ запустить набор потоков (не блокируя их) и остановить, когда они сигнализируются главным потоком?
Например, в этой теме обратный вызов:
void *threadCallback ( void * threadID) {
syncPrint("Thread %lu started . Waiting for stop signal\n", threadID);
pthread_mutex_lock(&stopSignalGuard);
int i = 0;
while(!stopSignal) {
i++;
syncPrint("increment : %d \n",i);
pthread_cond_wait(&stopCondition,&stopSignalGuard);
}
syncPrint("Stop signal received. Thread %lu will terminate...\n",(long)threadID);
pthread_mutex_unlock(&stopSignalGuard);
pthread_exit(NULL);
}
Из того, что я вижу, цикл while не работает эффективно. Выполнение заблокировано pthread_cond_wait (...). Можно запустить этот цикл, пока основной поток не подаст сигнал рабочим на остановку? Или это другой способ сделать это?
Спасибо!