进程间通信
进程间通信 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。是系统调用。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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负载均衡和反向代理的配置和优化