• 进程间通信(IPC, Inter Process Communication)读书笔记


    竞争条件(Race condition)

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


    临界区(Critical region)

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

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

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

    信号量(Semaphore)

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

    例子

    以一个停车场的运作为例。简单起见,假设停车场只有三个车位,一开始三个车位都是空的。这时如果同时来了五辆车,看门人允许其中三辆直接进入,然后放下车拦,剩下的车则必须在入口等待,此后来的车也都不得不在入口处等待。这时,有一辆车离开停车场,看门人得知后,打开车拦,放入外面的一辆进去,如果又离开两辆,则又可以放入两辆,如此往复。
     
    在这个停车场系统中,车位是公共资源,每辆车好比一个线程,看门人起的就是信号量的作用。
     
  • 相关阅读:
    JAVA基础——编程练习(二)
    JAVA基础——面向对象三大特性:封装、继承、多态
    JVM内存
    50. Pow(x, n) (JAVA)
    47. Permutations II (JAVA)
    46. Permutations (JAVA)
    45. Jump Game II (JAVA)
    43. Multiply Strings (JAVA)
    42. Trapping Rain Water (JAVA)
    41. First Missing Positive (JAVA)
  • 原文地址:https://www.cnblogs.com/ivorfeng/p/3066851.html
Copyright © 2020-2023  润新知