SDL2文章列表

SDL2入门

SDL2事件处理

SDL2纹理渲染

SDL2音频播放

FFmpeg+SDL2实现视频流播放

FFmpeg+SDL2实现音频流播放

FFmpeg音视频同步

今天一起了解下在SDL2中多线程的使用。

下面是SDL2中多线程相关的API。可以发现实际上SDL2中的多线程操作也只是提供了统一的接口,没有做其他操作。

创建线程
1
2
3
4
5
6
7
8
9
10
SDL_Thread* SDL_CreateThread(SDL_ThreadFunction fn,
const char* name,
void* data)

// fn: 线程要运行的函数。
// name: 线程名。
// data: 函数参数。

// 回调函数
typedef int (SDLCALL * SDL_ThreadFunction) (void *data);
等待线程
1
2
3
void SDL_WaitThread(SDL_Thread* thread,
int* status)
//等待线程结束
创建互斥量
1
SDL_mutex* SDL_CreateMutex(void)
销毁互斥量
1
void SDL_DestroyMutex(SDL_mutex* mutex)
加锁
1
int SDL_LockMutex(SDL_mutex* mutex)
解锁
1
int SDL_UnlockMutex(SDL_mutex* mutex)
信号量创建/销毁
1
2
SDL_cond * SDL_CreateCond(void);
void SDL_DestroyCond(SDL_cond * cond);
信号量等待 / 通知
1
2
int SDL_CondWait(SDL_cond * cond, SDL_mutex * mutex);
int SDL_CondSignal(SDL_cond * cond);

SDL2中的多线程其实并没有什么可以讲的,和我们用其他语言做多线程处理没有区别,在这里熟悉下API。