用户应该将要创建的线程数作为参数。
话虽这么说,我需要将它们存储在一个数组中,但这样的数组需要是全局的。
当我事先不知道尺寸时,如何申报清单?我的意思是,整数nthreads只在MAIN函数中初始化。 这是一个示例,因此您可以更好地理解我正在尝试做的事情:
int nthreads;
pthread_t thread_array[nthreads];
int main(int argc, char** argv){
nthreads = atoi(argv[0]);
}
答案 0 :(得分:1)
声明一个指针并在运行时分配足够的内存。
int nthreads;
pthread_t * thread_array;
int main(int argc, char** argv){
nthreads = atoi(argv[0]);
thread_array = calloc(sizeof(*thread_array), nthreads);
int i;
for (i = 0; i < nthreads; i++) {
pthread_start(thread_array + i, NULL, my_thread_function, my_thread_argument);
}
for (i = 0; i < nthreads; i++) {
pthread_join(thread_array[i], NULL);
}
}