zoukankan      html  css  js  c++  java
  • 进程间通信(IPC, Inter Process Communication)读书笔记

    竞争条件(Race condition)

    两个或多个进程读写某些共享数据,而最后的结果取决于进程运行的精确时序。


    临界区(Critical region)

    对共享内存进行访问的程序片段称作临界区域(critical region)或临界区。

    如果适当安排,使两个进程不可能同时处于临界区中,就能够避免竞争条件。尽管这样能避免竞争条件,但它不能保证使用共享数据的并发进程能够正确和高效地进行协作。对于一个好的解决方案,需要满足以下四个条件:

    • 任何两个进程不能同时处于其临界区。
    • 不应对CPU的速度和数量做任何假设。
    • 临界区外运行的进程不得阻塞其他进程。
    • 不得使进程无限期等待进入临界区。

    信号量(Semaphore)

    有时被称为信号灯,是可以用来保证两个或多个关键代码段不被并发调用。在进入一个关键代码段之前,进程/线程必须获取一个信号量;一旦该关键代码段完成了,那么该进程/线程必须释放信号量。其它想进入该关键代码段的进程/线程必须等待直到第一个线程释放信号量。

    例子

    以一个停车场的运作为例。简单起见,假设停车场只有三个车位,一开始三个车位都是空的。这时如果同时来了五辆车,看门人允许其中三辆直接进入,然后放下车拦,剩下的车则必须在入口等待,此后来的车也都不得不在入口处等待。这时,有一辆车离开停车场,看门人得知后,打开车拦,放入外面的一辆进去,如果又离开两辆,则又可以放入两辆,如此往复。
     
    在这个停车场系统中,车位是公共资源,每辆车好比一个线程,看门人起的就是信号量的作用。
     
  • 相关阅读:
    js 获取两个日期相差的天数--自定义方法
    C# Dictionary类型转json方法之一
    C# Obsolete(已弃用方法属性)
    css 样式计算器
    edge 浏览器自动识别电话号码解问题解决方法
    js 中止程序继续进行(break continue return throw)
    js根据等号(=)前名称获取参数值
    JS 时间格式为/Date(1332919782070)/ 转化为正常的格式
    input 内容发生改变时触发事件
    自我介绍for软件工程课程
  • 原文地址:https://www.cnblogs.com/ivorfeng/p/3066851.html
Copyright © 2011-2022 走看看