Loading

随笔分类 -  IPC

unix/linux ipc
摘要:一、D-Bus简介 什么是D-Bus? 详细介绍参考D-Bus D-Bus是一个在不同程序之间传递消息的系统总线,进程间通信方式的一种,但与传统进程间通信方法(管道、FIFO、消息队列、信号量、共享内存)有区别。 1.1 D-Bus的一些关键概念 D-Bus的关键概念参考链接 dbus name: 阅读全文
posted @ 2024-06-16 11:20 eiSouthBoy 阅读(531) 评论(0) 推荐(0)
摘要:一、Solaris门 门提供了调用同一台主机上的另外一个进程中某个过程的能力。门是一种特殊类型的IPC,因为客户端和服务器之间以函数参数和返回值形式交换信息。 示意图: 本想验证书中源码,发现头文件:#include <door.h> 都没有,互联网上查了很久,也没有相关的信息。暂且作罢。。。 二、 阅读全文
posted @ 2023-12-21 10:25 eiSouthBoy 阅读(169) 评论(0) 推荐(0)
摘要:一、共享内存区 所谓共享内存区,即程序通过固定大小的物理存储链接到本地内存中,这种IPC形式是最快的。管道、FIFO和消息队列的问题在于,两个进程要交换信息时,这些信息必须由内核传递。 共享内存区示意图: 共享内存区的限制: 二、Posix 共享内存区 基于Posix 共享内存区的生产者--消费者实 阅读全文
posted @ 2023-12-15 17:53 eiSouthBoy 阅读(165) 评论(0) 推荐(0)
摘要:一、消息队列 在上一章节 消息传递:消息队列 中提到 PIPE 和 FIFO 是基于字节流的,把这种字节流(没有消息边界)分隔成各个记录的任何方法都得由应用程序来实现。例如提到的一个记录的格式为一行,格式:1234 /tmp/fifo.serv。 另一方面,PIPE 和 FIFO 有许多规则,制约的 阅读全文
posted @ 2023-12-08 15:58 eiSouthBoy 阅读(85) 评论(0) 推荐(0)
摘要:一、简介 管道是没有名字的,管道创建的资源由内核管理,单个程序中不同进程通过管道描述符fd进行通信,对于程序和程序之间是无法通信的。 FIFO是有名字的(也称为 有名管道),每一个FIFO都有一个文件与之关联,但仅限于同一主机程序与程序之间通信,无法通过在NFS上创建FIFO通信。 二、管道 所有管 阅读全文
posted @ 2023-12-01 11:46 eiSouthBoy 阅读(121) 评论(0) 推荐(0)
摘要:信号量的定义 IPC是进程间通信(interprocess communication)的简称。狭义上,IPC主要用于进程间;广义上,IPC可用于进程间或线程间。 Posix消息队列、Posix信号量和Posix共享内存区 合称为 “Posix IPC”. 信号量(semaphore)是一种用于提供 阅读全文
posted @ 2023-10-20 14:13 eiSouthBoy 阅读(50) 评论(0) 推荐(0)
摘要:读写锁的定义 互斥锁锁住后,保证仅有一个线程处理数据(多线程共享的)。要是数据的读取比写入更频繁,且读取操作不涉及共享变量的修改,应允许多个线程读取操作对共享变量的读取。直接使用互斥锁效率太低,若使用读写锁,可以大大提高效率。 读写锁的分配规则: 1)只要没有线程持有某个特定的读写锁,那么任意数目的 阅读全文
posted @ 2023-10-18 14:49 eiSouthBoy 阅读(60) 评论(0) 推荐(0)
摘要:多线程同步 怎样同步多个线程或多个进程的活动? 为允许在线程或进程间共享数据,同步通常是必需的。而互斥锁和条件变量是同步的基本组成部分。 互斥锁用于保护 临界区(critical region),以保证任何时刻只有一个线程在执行其中的代码,或者任何时刻只有一个进程在执行其中的代码。 互斥锁用于上锁, 阅读全文
posted @ 2023-10-16 09:53 eiSouthBoy 阅读(102) 评论(0) 推荐(0)