【问题标题】:how do I declare a global array of pthreads without knowing the size beforehand?如何在事先不知道大小的情况下声明一个全局 pthread 数组?
【发布时间】:2014-01-10 15:59:25
【问题描述】:

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

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

如果事先不知道大小,如何声明列表?我的意思是,整数 nthreads 仅在 MAIN 函数中初始化。 这是一个示例,因此您可以更好地了解我要做什么:

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

【问题讨论】:

  • 这就是malloc() 的用途。

标签: c arrays pthreads global


【解决方案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);
    }
}

【讨论】:

  • 那么我可以使用:thread_array[index] 调用每个线程吗?
猜你喜欢
  • 1970-01-01
  • 2016-10-13
  • 2019-03-09
  • 1970-01-01
  • 1970-01-01
  • 2013-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多