reu*_*ohn 4 c++ parameters multithreading sdl
是的,我知道如何创建SDL线程.
int myfunc(void* data)
{
//my code...
}
SDL_CreateThread* mythread=SDL_CreateThread(myfunc,NULL);
Run Code Online (Sandbox Code Playgroud)
但是,如果我想做的事情如下:
int myfunc(void* data,int myparameter1,char myparameter2)
{
//my code...
}
SDL_CreateThread* mythread=SDL_CreateThread(myfunc,NULL,42,'c');
Run Code Online (Sandbox Code Playgroud)
即如何为具有多个参数的函数创建一个线程(参数不包括通常的'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);
Run Code Online (Sandbox Code Playgroud)