创建/分配p_threads数组

时间:2015-03-23 20:00:26

标签: c arrays multithreading struct pthreads

我正在学习C中的线程。

我正在尝试分配一个p_thread结构数组,以便它们可以运行某些函数然后将它们连接在一起。

所以我的步骤是: 1.创建一个指向pthread结构数组的指针(用户输入的大小不同) 2.分配pthread结构数组 3.为每个数组位置创建一个pthread

我的代码:

pthread_t * pthreadArray[userInputSize];
pthreadArray = malloc ((sizeof(pthread_t)) * userInputSize);

但是我收到了错误:

incompatible types when assigning to type 'pthread_t *[(size type)(userInputSize)]' from type 'void *'

任何人都可以澄清吗?

2 个答案:

答案 0 :(得分:0)

pthread_t * pthreadArray[userInputSize];正在分配一个大小为pthread的{​​{1}}指针数组。第二行试图用新分配的指针覆盖它,这不是你的意图。所以你应该从第一行中删除userInputSize部分。另外,第二行中有一些错误的括号。修复如下:

[]

答案 1 :(得分:0)

pthread_t * pthreadArray[userInputSize];

这声明了一个长度为pthread_t*的{​​{1}}数组。这根本不是你想要的。尤其是因为userInputSize在编译时是未知的,所以这将是一个可变长度数组(VLA)。

当然你想要这样做:

userInputSize

这使得pthread_t *pthreadArray = malloc(sizeof(pthread_t) * userInputSize); 属于pthreadArray类型,并将其初始化为动态分配的数组所需大小的内存块。