进程间通信

  进程间通信 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。是系统调用。

 

posted @   闲云-野鹤  阅读(222)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
历史上的今天:
2014-10-21 Nginx HTTP模块指令
2014-10-21 Nginx Rewrite规则
2014-10-21 Nginx负载均衡和反向代理的配置和优化
点击右上角即可分享
微信分享提示