gpt4 book ai didi

c - 创建线程时出错。警告 : passing argument 3 of ‘pthread_create’ from incompatible pointer type

转载 作者:行者123 更新时间:2023-11-30 16:52:58 24 4
gpt4 key购买 nike

我在创建线程池时遇到问题。我不断收到警告:

warning: passing argument 3 of ‘pthread_create’ from incompatible pointer type

我搜索过问题,但没有一个能帮我解决问题。这是我用于创建线程的代码

for(j=2;j<THREADNUMBER+2;j++){
id[j] = j;
if(pthread_create(&thread_array[j],NULL,requestHandler,(void*)id[j])!=0){
perror("Error creating thread ");
}
}

最佳答案

来自man pages :

#include <pthread.h>

int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
void *(*start_routine) (void *), void *arg);

Compile and link with -pthread.

第三个参数是一个指向函数的指针,该函数返回 void * 并采用 void * 类型的一个参数。通过仅使用 void * 类型的通用指针值(即内存地址)作为参数和返回类型,它是一个可以(至少间接)接受任何内容作为参数并返回的函数任何结果的地址。这使得它成为一个相当通用的函数,但仍然具有固定的函数签名。

您的函数 requestHandler() 似乎与此签名不匹配。确保您的 requestHandler() 恰好接受一个 void * 类型的参数并返回一个 void *。它应该看起来像:

void *requestHandler(void *arg) {
...
}

关于c - 创建线程时出错。警告 : passing argument 3 of ‘pthread_create’ from incompatible pointer type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41071550/

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