gpt4 book ai didi

C - pthread 参数

转载 作者:行者123 更新时间:2023-11-30 17:02:46 25 4
gpt4 key购买 nike

这是我第一次在 C 中使用线程,并且在传递函数参数时遇到问题。由于某些原因我需要创建这个线程。我有一个向服务器发送消息的功能。我的函数的标题是:

void* sender (char* payload, void (*Callback)(char*))

然后在我的主(简化)上,我创建以下线程:

main ()
{
pthread_t sender_id;
int err_s;

err_s = pthread_create (&sender_id, NULL, &sender, NULL);
}

问题是我的函数发送者有很多参数,所以我收到此错误:

note: expected 'void * (*)(void *)' but argument is of type 'void * (*)(char *, void (*)(char *))'

如果有人能帮助我,我将不胜感激。

最佳答案

您可以创建一个结构,比如说:

struct thread_prm
{
char *payload;
void (*Callback)(char*) cb;
}

您只需分配一个如下所示的结构并将其作为最后一个参数传递给 pthread_create 。像这样:

struct thread_prm *arg;
arg = malloc(sizeof(struct thread_prm));
(assign arg members to something)
pthread_create(&sender_id, NULL, &sender, arg);

然后您修改发件人:

void* sender (void *arg)
{
struct thread_prm *_arg = arg;
char* payload;
void (*Callback)(char*) cb;

payload = _arg->payload;
cb = _arg->cb;
...
}

关于C - pthread 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36446928/

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