请考虑 C 函数的以下部分:
for (int i = 0; i < n; ++i) {
thread_arg *arg = (thread_arg *) malloc(sizeof(thread_arg));
arg->random_value = random_value;
arg->message = &(message[i * 10]);
if (pthread_create(NULL,NULL,thread_start,(void *) &arg)) {
perror("pthread_create");
exit(EXIT_FAILURE);
}
}
在此for
循环中,我创建了n
个线程,这些线程都使用不同的参数执行相同的例程。 for
循环是一个较大函数的一部分,该函数返回一个数据结构,该结构将被所有并行线程修改。因此,重要的是,不要在所有线程完成之前返回此更大的函数。
我希望找到一种更简单的方法,然后为所有这些线程提供一个单独的ID,然后再与pthread_join
联接。
有没有通用的方法可以对函数说“嘿,不要返回”直到您创建的所有线程都返回“?