我正在尝试创建动态数量的线程.....
#include<stdio.h>
#include<pthread.h>
void* thread_function(void)
{
printf("hello");
}
int main(int argc,char *argv[])
{
int noOfThread= atoi(argv[1]);
pthread_t thread_id[noOfThread];
int i;
int status;
for(i=0;i<noOfThread;i++)
{
pthread_create (&thread_id[i], NULL , &thread_function, NULL);
}
for(i=0;i<noOfThread;i++)
pthread_join(thread_id[i],NULL);
}
3个错误:
答案 0 :(得分:2)
这里有几个问题:
pthread任务函数具有void *参数。这将解决问题2和问题3。 (http://man7.org/linux/man-pages/man3/pthread_create.3.html)。
void* thread_function(void* arg);
为便于移植并与较早的C编译器兼容,应显式使用malloc分配pthread_t数组。在这种情况下,请确保检查NULL返回值并稍后释放内存。或者,您可以声明要分配的最大线程数,并使用恒定的数组大小。
pthread_t* thread_id = malloc(noOfThread*sizeof(pthread_t));