如何在不事先知道大小的情况下声明全局pthread数组?

时间:2014-01-10 15:59:26

标签: c arrays pthreads global

用户应该将要创建的线程数作为参数。

话虽这么说,我需要将它们存储在一个数组中,但这样的数组需要是全局的。

当我事先不知道尺寸时,如何申报清单?我的意思是,整数nthreads只在MAIN函数中初始化。 这是一个示例,因此您可以更好地理解我正在尝试做的事情:

int nthreads;
pthread_t thread_array[nthreads];
int main(int argc, char** argv){
   nthreads = atoi(argv[0]);
}

1 个答案:

答案 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);
    }
}