SDL2中的并发线程机制
线程管理
- 线程创建——SDL_CreateThread
- 线程销毁——SDL_DetachThread
- 获得线程ID——SDL_GetThreadID/SDL_ThreadID
- 获得线程名称——SDL_GetThreadName
- 设置线程优先级——SDL_SetThreadPriority
- 等待线程结束——SDL_WaitThread
线程同步机制
- 条件量
- SDL_CreateCond
- SDL_DestroyCond
- SDL_CondBroadcast
- SDL_CondSignal
- SDL_CondWait
- SDL_CondWaitTimeout
- 互斥量
- SDL_CreateMutex
- SDL_DestroyMutex
- SDL_LockMutex
- SDL_TryLockMutex
- SDL_UnlockMutex
- 信号量
- SDL_CreateSemaphore
- SDL_DestroySemaphore
- SDL_SemPost
- SDL_SemTryWait
- SDL_SemValue
- SDL_SemWait
- SDL_SemWaitTimeout
原子操作
- SDL_AtomicAdd
- SDL_AtomicGet
- SDL_AtomicLock
- SDL_AtomicSet
关于函数详细说明,建议参考sdl-wiki
Windows下线程并发机制
线程管理--MSDN
- 线程创建——CreateThread、_beginthread、_beginthreadex
- 线程结束——ExitThread、_endthread、_endthreadex
- 强制线程结束——TerminateThread
- 获取和设置线程优先级——GetThreadPriority、SetThreadPriority
- 等待线程结束——WaitForSingleObject
- 获取线程id——GetThreadID
- 获得线程句柄——OpenThread、GetCurrentThread、CloseHandle
- 获得线程退出码——GetExitCodeThread
线程同步机制--同步对象&线程同步
- Critical Section
- Condition
- Muxtex
- Event
- Semaphore
- Waitable Timer
- Thread/Process Handle
更多的细节建议参考MSDN上介绍。
原子操作——Interlocked系列
- 自增——InterlockedIncrement
- 自减——InterlockedDecrement
Linux下线程并发机制
由于我之前对Linux编程未关注,线程并发了解并不多,不过从搜索结果来看多数还是pthread库。
这里先基于这个版本整理下。
线程管理
- 线程创建——pthread_create()
- 线程终止——pthread_exit()
- 线程异常终止——pthread_cancel()
- 等待线程结束——pthread_join()
- 初始化、销毁线程的属性——pthread_attr_init()、pthread_attr_destroy()
- 杀死线程信号——pthread_kill()
- 判断两个线程是否一致——pthread_equal()
- 分离线程——pthread_detach()
- 查询线程标识号——pthread_self()
线程同步机制
- 互斥量Mutex
- pthread_mutex_init() 初始化互斥锁
- pthread_mutex_destroy() 删除互斥锁
- pthread_mutex_lock() 占有互斥锁(阻塞操作)
- pthread_mutex_trylock():试图占有互斥锁(不阻塞操作)。即,当互斥锁空闲时,将占有该锁;否则,立即返回。
- pthread_mutex_unlock(): 释放互斥锁
- 条件变量 Condition
- pthread_cond_init():初始化条件变量
- pthread_cond_destroy():销毁条件变量
- pthread_cond_signal(): 唤醒第一个调用pthread_cond_wait()而进入睡眠的线程
- pthread_cond_wait(): 等待条件变量的特殊条件发生
- 信号量 sem
- sem_init函数:该函数用于创建信号量
- sem_wait函数:等待并获取信号量
- sem_post函数:释放信号量
- sem_destroy函数:销毁信号量