Как я могу убедиться, что несколько потоков в ядре Linux завершены, прежде чем продолжить?
См. Пример кода (слегка измененный) из предыдущего вопроса ( Как присоединиться к потоку в ядре Linux? )
void *func(void *arg) {
// doing something
return NULL;
}
int init_module(void) {
struct task_struct* thread[5];
int i;
for (i=0; i<5; i++) {
thread[i] = kthread_run(func, (void*) arg, "TestThread");
wake_up_process(thread[i]);
}
// wait here until all 5 threads are complete
// do something else
return 0;
}
Ответ из этого предыдущего вопросадостаточно подробно (https://stackoverflow.com/a/29961182/7431886),, что здорово, но оно касается только объема исходного вопроса (ожидание завершения только одного из потоков).
Как можно обобщить либоСемафор или методы завершения, подробно описанные в этом ответе, ожидают N потоков, а не только конкретный?