gpt4 book ai didi

c++ - 将结构从结构数组传递给 pthread_create

转载 作者:行者123 更新时间:2023-11-28 08:23:36 24 4
gpt4 key购买 nike

我创建了一个结构数组。我试图通过 pthread_create 将这个数组中的一个元素传递给一个线程。我收到以下错误(它们是针对我在 for 循环中的 2 个 pthread_create 调用):

/../a2/main.cpp|117|error: invalid conversion from ‘void (*)(serverDataStruct*)’ to ‘void* (*)(void*)’|

/../a2/main.cpp|117|error: initializing argument 3 of ‘int pthread_create(pthread_t*, const pthread_attr_t*, void* (*)(void*), void*)’|

我看了一遍,似乎我的语法是正确的。我将在下面发布我的代码。有人可以帮帮我吗?

struct serverDataStruct
{

};

struct clientDataStruct
{

};

void serverFunc(serverDataStruct *serverData);

void clientFunc(int *ticketNum);


struct serverDataStruct serverDataArray[MAX_NUM_SERVERS];
struct clientDataStruct clientDataArray[MAX_NUM_CLIENTS];

int main ( )
{
for(int i = 0; i < numServers; i++) //create servers
{
pthread_create( &serverTID[i], NULL, serverFunc, (void*) &serverDataArray[i]); //PROBLEM LINE*****************************************************************

}

for(int i = 0; i < numCustomers; i++)
{
pthread_create( &clientTID[i], NULL, clientFunc, (void*) &clientDataArray[i]); //PROBLEM LINE*****************************************************************

}
}


void *serverFunc(void *serverData)
{

}


void *clientFunc(void *clientData)
{

}

最佳答案

您的函数定义正确,但您的前向声明不正确。

改变这两行:

void serverFunc(serverDataStruct *serverData);
void clientFunc(int *ticketNum);

匹配函数定义:

void *serverFunc(void *serverData);
void *clientFunc(void *ticketNum);

顺便说一句,请编辑您的问题以删除所有不必要的代码:-) 请格式化它:-)

关于c++ - 将结构从结构数组传递给 pthread_create,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4911313/

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