zoukankan      html  css  js  c++  java
  • 不同平台的线程并发接口对比

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

    原子操作

    未知。后续补充。

  • 相关阅读:
    leetcode -- Word Break
    [笔试题]MS 2014
    网络编程之TCP/IP各层详解
    深浅copy
    字符编码的转换
    Bytes类型
    Django之模型层(1)
    Django之模板层
    用Python操作文件
    hash(哈希)是什么
  • 原文地址:https://www.cnblogs.com/tocy/p/different-platform-thread-parallel.html
Copyright © 2011-2022 走看看