zoukankan      html  css  js  c++  java
  • 进程间通信

      进程间通信 IPC

    协作的进程可能会共享一些彼此都能读写的公共存储区,这个存储区可能在内存,也可能是文件。多个进程同时操作这个共享的区域,就会产生竞争。

     临界区

    共享内存进行访问的程序片段叫做临界区。

    1.任何两个进程不能同时处理临界区

    2.不应对CPU的速度和数量做任何假设

    3.临界区外运行的进程不得 阻塞其他进程

    3.不得使进程无限期等待进入临界区

    信号量

    使用一个变量整数作为唤醒进程的标志。只有两种操作一种是Down 一种是up

    解决生产者消费模型。使用三个信号量。一个称为Full,一个称为empty,一个称为mutex。进入临界区后,每个进程将信号量加1。离开的时候执行down。

    信号量还有一种作用就是同步,信号full和empty保证某种事件不会发生。

    互斥量

    互斥量是一种处于两者之间的变量。解锁和加锁操作。只需要一个二进制 0 1 就可以表示了。当一个进程进入临界区后,调用(mutex_lock) 加锁。如果该互斥量是解锁的,则调用成功。否则阻塞进程。直到临界区中的进程(mutex_unlock)之后。

    pthread 中提供的线程同步的函数。

    除了mutex之外。ptread 还提供了另外一种同步机制。条件变量。条件变量允许线程由于一些未达到的条件进行阻塞。

    管程

    一个管程是由变量、数据结构、过程组成的集合。在管程中,任何一个时刻只有一个活跃的进程。

    消息传递

    进程间通信传递 send received。是系统调用。

  • 相关阅读:
    Java实现 LeetCode 691 贴纸拼词(DFS+map记录)
    Java实现 LeetCode 691 贴纸拼词(DFS+map记录)
    PHP is_resource() 函数
    PHP is_float()、 is_double()、is_real()函数
    PHP is_object() 函数
    PHP is_numeric() 函数
    PHP is_null() 函数
    目标检测算法进展大盘点
    斯坦福大学李飞飞团队图像分类课程笔记
    激光雷达与应用
  • 原文地址:https://www.cnblogs.com/tl542475736/p/7706089.html
Copyright © 2011-2022 走看看