gpt4 book ai didi

c - 创建动态数量的线程时出错

转载 作者:行者123 更新时间:2023-11-30 20:09:13 25 4
gpt4 key购买 nike

我正在尝试创建动态数量的线程......

#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 个错误:

  1. 函数 atoi 的隐式声明...
  2. 从不兼容的指针类型传递“pthread_create”的参数 3
  3. 预期为“void * (*)(void *)”,但争论类型为“void * (*) (void)”……

最佳答案

这里有几个问题:

  1. 您需要包含 stdlib.h 来声明 atoi()
  2. pthread 任务函数具有 void* 参数。这将解决问题 #2 和 #3。(http://man7.org/linux/man-pages/man3/pthread_create.3.html)。

    void* thread_function(void* arg);
  3. 为了实现最佳的可移植性并与较旧的 C 编译器兼容,您应该使用 malloc 显式分配 pthread_t 数组。在这种情况下,请务必检查 NULL 返回值并稍后释放内存。或者您可以声明要分配的最大线程数并使用常量数组大小。

    pthread_t* thread_id = malloc(noOfThread*sizeof(pthread_t));

关于c - 创建动态数量的线程时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53456290/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com