12、IPC通信比较

简介: IPC通信 1、pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。管道的缓冲区是有限的(管道存在于内存中,在管道创建时,为缓冲区分配一个页面大小);管道所传送的是无格式字节流,要求管道的读出方和写入方必须事先约定好数据的格式。

IPC通信

1、pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。管道的缓冲区是有限的(管道存在于内存中,在管道创建时,为缓冲区分配一个页面大小);管道所传送的是无格式字节流,要求管道的读出方和写入方必须事先约定好数据的格式

2、命名管道(fifo):命名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。严格遵循先进先出(first in first out),对管道及FIFO的读总是从开始处返回数据,对它们的写则把数据添加到末尾。诸如不支持lseek()等文件定位操作。

3、信号量(semophore )信号量是一个计数器,可以用来控制多个进程对共享资源的访问。主要作为进程间以及同一进程内不同线程之间的同步手段。二元信号量:与Mutex类似

4、消息队列(message queue ):消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。可以用非先进先出方式处理;消息队列是异步通信的;消息队列有大小限制,通常只用于小数据量的发送;只适用于单台主机的进程间通信;

5、共享内存( shared memory):共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的IPC方式。效率高,进程可以直接读写内存,而不需要任何数据的拷贝;在共享内存段中都是以字符串的默认结束符为一条信息的结尾。每个进程在读写时都遵守这个规则,就不会破坏数据的完整性。

目录
相关文章
|
7月前
|
测试技术 持续交付 开发工具
《鸿蒙开发深度揭秘:应用版本管理与回滚策略》
在鸿蒙开发中,版本管理与回滚是保障应用稳定迭代和用户体验的关键环节。通过语义化版本控制(如“主版本号.次版本号.修订号”)、Git版本控制系统及CI/CD流程,开发者可高效管理代码变更、实现并行开发并确保版本清晰可追溯。当新版本出现问题时,回滚机制通过技术手段(如`git revert`或`git reset`)快速恢复至稳定状态。此外,完善的测试体系与灰度发布策略能降低回滚风险,而持续优化的版本管理方案则应对技术演进与生态变化带来的挑战。掌握这些核心技能,开发者可在鸿蒙生态中实现技术与商业双赢。
294 5
|
移动开发 应用服务中间件 Linux
Apache Guacamole教程之安装部署
Apache Guacamole教程之安装部署
8118 0
Apache Guacamole教程之安装部署
|
5月前
|
机器学习/深度学习 存储 安全
4G手机内存玩转Qwen2.5-Omni?MNN全面支持Qwen2.5-Omni与Qwen3!
随着移动端算力、存储能力的提升,在端侧部署大模型已成为趋势。本地化运行可消除网络延迟实现毫秒响应,降低云端算力成本,同时避免数据上传保障隐私安全。
1094 1
|
10月前
|
机器学习/深度学习 人工智能 自然语言处理
NeurIPS 2024:真实世界复杂任务,全新基准GTA助力大模型工具调用能力评测
在NeurIPS 2024会议上,GTA(General Tool Agents Benchmark)基准测试被提出,旨在评估大型语言模型(LLM)在真实世界复杂任务中的工具调用能力。GTA采用真实用户查询、真实部署工具和多模态输入,全面评估LLM的推理和执行能力。结果显示,现有LLM在真实世界任务中仍面临巨大挑战,为未来研究提供了重要方向。
228 13
|
6月前
|
前端开发 JavaScript API
Webview+Python:用HTML打造跨平台桌面应用的创新方案
本文系统介绍了使用PyWebView库结合HTML/CSS/JavaScript开发跨平台桌面应用的方法。相比传统方案(如PyQt、Tkinter),PyWebView具备开发效率高、界面美观、资源占用低等优势。文章从技术原理、环境搭建、核心功能实现到性能优化与实战案例全面展开,涵盖窗口管理、双向通信、系统集成等功能,并通过“智能文件管理器”案例展示实际应用。适合希望快速构建跨平台桌面应用的Python开发者参考学习。
606 1
|
8月前
|
人工智能 物联网 测试技术
FireRedASR:精准识别普通话、方言和歌曲歌词!小红书开源工业级自动语音识别模型
小红书开源的工业级自动语音识别模型,支持普通话、中文方言和英语,采用 Encoder-Adapter-LLM 和 AED 架构,实现 SOTA 性能。
2406 17
FireRedASR:精准识别普通话、方言和歌曲歌词!小红书开源工业级自动语音识别模型
|
11月前
|
监控 安全 数据可视化
部署开源软件的最佳选择:Websoft9 vs 宝塔
在互联网技术快速发展的背景下,开源软件因灵活性和成本效益受到青睐。本文对比了两款服务器管理工具——宝塔面板和Websoft9。两者各具特色,用户可根据实际需求选择。
|
存储 关系型数据库 MySQL
|
Windows
IDEA如何查看已经安装的插件并删除
【10月更文挑战第1天】这段内容主要介绍了如何在IntelliJ IDEA中查看和删除已安装的插件。可以通过软件内的插件市场查看插件列表,包括插件名称、版本号和供应商等信息;也可以通过访问插件目录查看。删除插件则建议在插件市场中进行,包括禁用和卸载步骤,手动删除插件文件夹的方法不推荐,因为可能存在配置残留等问题。
2982 12
|
Ubuntu Java Linux
update-alternatives命令如何使用?
【8月更文挑战第5天】update-alternatives命令如何使用?
1005 5