• 进程和线程的同步





    线程和进程同步的4个对象: Critical Section, Mutex和Semaphore, 还有Event.
    Critical Section是最简单的,只要将Critical Section的lock和unlock语句夹住你要保护的资源访问过程即可. Critical Section 会自动记录访问者的线程.帮助你完成互斥的效果.它最简单,也最高效,但是不能用在进程之间.
    其他三种都可以用在进程之间,他们都有name,可以用name在进程间获得handle.他们都要与WaitForSingleObject or WaitForMultiObject配合使用.

    Mutex用法,在要保护的资源访问之前调用WaitforSingleObject,访问结束的时候release. Wait函数会判断该Mutex对象是否被占用(或者说无信号状态),有信号的话,立即返回,无信号则会阻塞.知道mutex编程有信号状态.

    Semaphore和Mutex机会一样,唯一的不同是,Semaphore可以控制访问一个资源的最大数量,Mutex相当于最大数量是1的semaphore.

    Event其实道理也是一样,但是Event多用在一个线程通知另一个线程某个信号.它允许setevent和resetevent来自由控制有信号和无信号状态.告知另外一个线程.另一个线程一般通过waitforsingleboject函数来等待信号. 另外自动的event在调用wait函数之后自动变成无信号状态.这是它的特色.




  • 相关阅读:
    Spark学习之Spark Core
    Druid
    Spark学习之scala编程
    大数据学习之Zookeeper
    大数据学习之HBase
    大数据学习之Yarn
    大数据学习之Mapreduce
    运行spark sql时出现的一个问题
    大数据学习之Hive 简介安装与基本练习
    mysql
  • 原文地址:https://www.cnblogs.com/dqshll/p/1117498.html
Copyright © 2020-2023  润新知