zoukankan      html  css  js  c++  java
  • 秒杀多线程第九篇 经典线程同步总结 关键段 事件 互斥量 信号量

     

    创建或初始化

    销毁

    进入互斥区域

    离开互斥区域

    关键段CS

    Initialize-

    CriticalSection

    Delete-

    CriticalSection

    Enter-

    CriticalSection

    Leave-

    CriticalSection

    互斥量Mutex

    CreateMutex

    CloseHandle

    等待系列函数如WaitForSingleObject

    ReleaseMutex

    键段与互斥量都有“线程所有权”概念,可以将“线程所有权”理解成旅馆的房卡,在旅馆前台登记名字拥有房卡后是可以多次进出房间的,其它人则无法进入直到你交出房卡。每个线程必须先通过EnterCriticalSection或WaitForSingleObject来尝试获得“线程所有权”才能调用LeaveCriticalSection或ReleaseMutex。否则会调用失败,这就相当于伪造房卡去办理退房手续——由于登记本上没有你的名字所以会被拒绝。

    互斥量能很好的处理“遗弃”情况,因此在多进程之间可以放心的使用。

    信号量:

     

    创建

    销毁

    递减计数

    递增计数

    信号量

    Semaphore

    Create-

    Semaphore

    CloseHandle

    等待系列函数如WaitForSingleObject

    Release-

    Semaphore

    号量在计数大于0时表示触发状态,调用WaitForSingleObject不会阻塞,等于0表示未触发状态,调用WaitForSingleObject会阻塞直到有其它线程递增了计数

    事件:

     

    创建

    销毁

    使事件触发

    使事件未触发

    事件Event

    CreateEvent

    CloseHandle

    SetEvent

    ResetEvent

    注意事件的手动置位和自动置位要分清楚,不要混淆了。

    更多可关注博客http://blog.csdn.net/morewindows/article/details/7538247

  • 相关阅读:
    程序的局部性原理2
    程序的局部性原理
    ROM
    学习Spring Security OAuth认证(一)-授权码模式
    mybatis*中DefaultVFS的logger乱码问题
    maven生命周期绑定要点
    spring security antMatchers相关内容
    JSTL
    什么是CSS hack?
    Java中获得当前静态类的类名
  • 原文地址:https://www.cnblogs.com/yuqilihualuo/p/3025979.html
Copyright © 2011-2022 走看看