不同平台的线程并发接口对比

[时间:2017-03] [状态:Open]
[关键词:并发,线程,同步,linux,windows,sdl2,]

最近在linux下开发,发现线程并发处理机制并没有深入分析过。也就是在Linux下用过,Android偶尔用过。
仔细想想还是整理下吧。总结下有助于后续使用。
注意本文仅仅是接口整理,其他的并不涉及什么特殊的。

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函数:销毁信号量

原子操作

未知。后续补充。

原文地址:https://www.cnblogs.com/tocy/p/different-platform-thread-parallel.html