gpt4 book ai didi

c++ - 如何向 SDL 线程发送附加参数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:29:46 25 4
gpt4 key购买 nike

是的,我知道如何创建 SDL 线程。

int myfunc(void* data)
{
//my code...
}
SDL_CreateThread* mythread=SDL_CreateThread(myfunc,NULL);

但是如果我想做类似的事情怎么办:

int myfunc(void* data,int myparameter1,char myparameter2)
{
//my code...
}
SDL_CreateThread* mythread=SDL_CreateThread(myfunc,NULL,42,'c');

即如何为具有多个参数的函数创建一个线程(参数不包括通常的'void* data')如果这不可能,您能否建议我可以将参数传递给线程的任何方法?

最佳答案

您可以在堆上创建一个struct,用您的数据设置它的字段,然后将它的地址传递给SDL_CreateThread:

typedef struct {
int param1;
char param2;
} ThreadData;

int myfunc(void* data)
{
ThreadData *tdata = data;
int param1 = tdata->param1;
char param2 = tdata->param2;
free(data); // depending on the content of `data`, this may have
// to be something more than a single `free`
//my code...
}
ThreadData *data = malloc(sizeof(ThreadData));
data->param1 = ...;
data->param2 = ...;
SDL_CreateThread* mythread=SDL_CreateThread(myfunc,data);

关于c++ - 如何向 SDL 线程发送附加参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17792542/

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