[转帖]进程间通信方式

进程,间通信,方式 · 浏览次数 : 0

小编点评

**管道** *管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。 * 无名管道用于两个不同进程之间的通信。 * 有名管道也是一种半双工的通信方式,但它允许无亲缘关系进程间的通信。 **信号量** * 信号量是一个计数器,可以用来控制多个线程对共享资源的访问。 * 信号量用于多线程之间的同步。 **信号** * 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。 **消息队列** * 消息队列是消息的链表,存放在内核中并由消息队列标识符标识。 * 消息队列克服了信号传递信息少,管道只能承载无格式字节流以及缓冲区大小受限等特点。 * 消息队列是UNIX下不同进程之间可实现共享资源的一种机制。 **共享内存** * 共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。

正文

1)管道 
管道分为有名管道和无名管道 
无名管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用.进程的亲缘关系一般指的是父子关系。无明管道一般用于两个不同进程之间的通信。当一个进程创建了一个管道,并调用fork创建自己的一个子进程后,父进程关闭读管道端,子进程关闭写管道端,这样提供了两个进程之间数据流动的一种方式。 
有名管道也是一种半双工的通信方式,但是它允许无亲缘关系进程间的通信。

2)信号量 
信号量是一个计数器,可以用来控制多个线程对共享资源的访问.,它不是用于交换大批数据,而用于多线程之间的同步.它常作为一种锁机制,防止某进程在访问资源时其它进程也访问该资源.因此,主要作为进程间以及同一个进程内不同线程之间的同步手段.

3)信号 
信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生.

4)消息队列 
消息队列是消息的链表,存放在内核中并由消息队列标识符标识.消息队列克服了信号传递信息少,管道只能承载无格式字节流以及缓冲区大小受限等特点.消息队列是UNIX下不同进程之间可实现共享资源的一种机制,UNIX允许不同进程将格式化的数据流以消息队列形式发送给任意进程.对消息队列具有操作权限的进程都可以使用msget完成对消息队列的操作控制.通过使用消息类型,进程可以按任何顺序读信息,或为消息安排优先级顺序.

5)共享内存 
共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问.共享内存是最快的IPC(进程间通信)方式,它是针对其它进程间通信方式运行效率低而专门设计的.它往往与其他通信机制,如信号量,配合使用,来实现进程间的同步与通信.

6)套接字:可用于不同及其间的进程通信

与[转帖]进程间通信方式相似的内容:

[转帖]进程间通信方式

1)管道 管道分为有名管道和无名管道 无名管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用.进程的亲缘关系一般指的是父子关系。无明管道一般用于两个不同进程之间的通信。当一个进程创建了一个管道,并调用fork创建自己的一个子进程后,父进程关闭读管道端,子进程关闭写管道端

[转帖]微服务的进程间通信(IPC)

https://www.cnblogs.com/charlieroro/p/14707910.html 目录 微服务的进程间通信(IPC) 术语 概述 通信视角 APIs 消息格式 RPC REST gRPC 断路器 API通信的健壮性 服务发现 异步消息 概念 消息 消息类型 Channels 异

[转帖]setsockopt(setsockopt的使用方法及注意事项)

http://xingzuo.aitcweb.com/9156453.html 1. setsockopt简介 setsockopt是一个系统调用函数,用于设置套接字选项。套接字是指通信的两个端点之间的一种接口,可用于实现网络通信和进程间通信。使用setsockopt可以设置各种套接字选项,例如:超

[转帖]AF_UNIX和AF_INET

https://www.cnblogs.com/shangerzhong/p/9153737.html family参数代表地址家族,比较常用的为AF_INET或AF_UNIX。AF_UNIX用于同一台机器上的进程间通信,AF_INET对于IPV4协议的TCP和UDP 。 type参数代表套接字类型

[转帖]进程 线程和 协程

作者:ScratchLab链接:https://www.zhihu.com/question/308641794/answer/2867920715来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 线程有两种实现方式:内核态线程和用户态线程。早期,内核态线程由于概念清晰

[转帖]PostgreSQL进程结构

http://www.pgsql.tech/article_101_10000099 1、简介 本文简单的介绍了 PostgreSQL 的主要进程类型与功能。 2、PostgreSQL进程分为主进程与辅助进程。 2.1、主进程: PostMaster进程是整个数据库实例的总控进程,负责启动关闭该数据

[转帖]linux进程、线程与cpu的亲和性(affinity)

https://www.cnblogs.com/wenqiang/p/6049978.html 最近的工作中对性能的要求比较高,下面简单做一下总结: 一、什么是cpu亲和性(affinity) CPU的亲和性, 就是进程要在指定的 CPU 上尽量长时间地运行而不被迁移到其他处理器,也称为CPU关联性

[转帖]Linux进程栈空间大小

https://zhuanlan.zhihu.com/p/530357476 内核栈 Linux上进程的相关属性在内核中表示为task_struct,该结构体中stack成员指向进程内核栈的栈底: struct task_struct { ... void *stack; ... } 我们知道Lin

[转帖]疑问:进程在竞争CPU时并没有真正运行,为什么还会导致系统的负载升高?

疑问:进程在竞争CPU时并没有真正运行,为什么还会导致系统的负载升高? 因为存在CPU上下文切换。 linux系统说明 Linux是一个多任务操作系统,它支持远大于CPU数量的任务同时运行。当然,这些任务实际上并不是真的在同时运行,而是因为系统在很短的时间内,将CPU轮流分配给他们,造成多任务同时运

[转帖]redis进程绑定指定的CPU核

文章系转载,便于分类和归纳,源文地址:https://blog.csdn.net/youlinhuanyan/article/details/99671878 1)查看某服务的pid $ ps -aux|grep redis 1)显示进程运行的CPU #命令 $ taskset -p 21184 显