SDL_CreateThread 传参示例
时间: 2023-08-20 20:06:22 浏览: 201
当使用SDL_CreateThread函数创建线程时,可以通过传递一个指向函数的指针作为参数来执行线程函数。以下是一个示例代码,用于演示如何使用SDL_CreateThread传递参数:
```c
#include <SDL2/SDL.h>
#include <stdio.h>
// 线程函数
int threadFunction(void* data) {
int threadID = *((int*)data); // 获取传递的参数值
printf("Hello from thread %d\n", threadID);
return 0;
}
int main() {
SDL_Thread *thread;
int threadID = 1; // 定义传递的参数值
// 创建线程
thread = SDL_CreateThread(threadFunction, "Thread", (void*)&threadID);
if (thread == NULL) {
printf("Failed to create thread: %s\n", SDL_GetError());
return -1;
}
// 等待线程结束
SDL_WaitThread(thread, NULL);
return 0;
}
```
在上面的示例中,我们定义了一个`threadFunction`函数作为线程函数,它接受一个`void*`类型的参数`data`。在`main`函数中,我们首先定义了一个整数变量`threadID`作为传递的参数值。然后,我们使用SDL_CreateThread函数创建线程,并将`threadFunction`作为线程函数传递给它。我们还将`&threadID`强制转换为`void*`类型,以便将参数传递给线程函数。最后,我们使用SDL_WaitThread函数等待线程结束。
当我们运行上述代码时,会输出"Hello from thread 1",表示线程函数成功执行,并且传递的参数值也正确。
阅读全文