首页 > 系统相关 >说说进程间通信和线程间通信的几种方式及区别

说说进程间通信和线程间通信的几种方式及区别

时间:2024-10-23 08:52:34浏览次数:6  
标签:信号量 通信 几种 间通信 互斥 线程 进程

进程和线程的区别:

进程:是资源分配的基本单位;线程:是程序执行的最小单位

进程间的通信方式:

管道( pipe ):

管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。

有名管道 (namedpipe) :

有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。

信号量(semophore ) :

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

消息队列( messagequeue ) :

消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。

信号 (sinal ) :

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

共享内存(shared memory ) :

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

套接字(socket ) :

套接口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同设备及其间的进程通信。

线程间的通信方式

锁机制:包括互斥锁、条件变量、读写锁

  • 互斥锁提供了以排他方式防止数据结构被并发修改的方法。
  • 读写锁允许多个线程同时读共享数据,而对写操作是互斥的。
  • 条件变量可以以原子的方式阻塞进程,直到某个特定条件为真为止。对条件的测试是在互斥锁的保护下进行的。条件变量始终与互斥锁一起使用。

信号量机制(Semaphore):包括无名线程信号量和命名线程信号量

信号机制(Signal):类似进程间的信号处理

线程间的通信目的主要是用于线程同步,所以线程没有像进程通信中的用于数据交换的通信机制。

 

 

标签:信号量,通信,几种,间通信,互斥,线程,进程
From: https://blog.csdn.net/weixin_63908159/article/details/143174206

相关文章

  • 【SpringBoot系列】实现跨域的几种方式
    一、什么是跨域跨域是指一个域下的文档或脚本试图去请求另一个域下的资源,或者涉及到两个不同域名的资源之间的交互。由于同源策略(SameOriginPolicy)的限制,浏览器不允许跨域请求。同源策略规定,A网页设置的Cookie、LocalStorage和IndexDB无法被同源以外的网页读取。跨域请......
  • iOS 回到主线程刷新UI
    在iOS里面,项目打开就会运行一个主线程,所有的UI都在主线程里进行.其他网络请求或者耗时操作理论上也可以在主线程运行,但是如果太耗时,那么就会影响主线程其他UI.所以需要开字线程来进行耗时操作,子线程进行完耗时操作之后,如果项目需求有需要刷新UI,或者改变UI,一定得回到主......
  • 操作系统实验之Windows中的线程与线程同步现象
    一、实验目的1.掌握Windows中线程的操作。2.熟悉线程不同步时的现象及环境因素。3.掌握一种同步对象的使用。二、实验理论基础及教材对应关系1.线程和线程不同步的认识。2.线程间的同步和通信。3.本实验内容主要对应于操作系统教材第2章中关于线程的各节。三、实验内容与步......
  • 线程池实现原理及实践
    线程池的总体设计ThreadPoolExecutor实现的顶层接口是Executor,顶层接口Executor提供了一种思想:将任务提交和任务执行进行解耦。用户无需关注如何创建线程,如何调度线程来执行任务,用户只需提供Runnable对象,将任务的运行逻辑提交到执行器(Executor)中,由Executor框架完成线程的调配......
  • 11-案例:多线程版用户聊天程序
    1.多线程版用户群聊程序的_多用户聊天运行结果2.多线程版用户群聊程序的_服务端代码3.多线程版用户群聊程序的_客户端代码4.多线程版用户群聊程序的_双用户聊天运行结果5.多线程版用户群聊程序的_双用户聊天运行服务端代码6.多线程版用户群聊程序的_双用户聊天运行客户端代码......
  • 【Linux线程】Linux多线程实践:深入生产者消费者模型
    ......
  • FFC/FPC插座的类型有几种,一般型号命名方式是怎样的
    FPC/FFC插座间距分别有0.3mm,0.5mm,0.8mm,1.0mm,1.25mm,2.54mm。 规格包含:翻盖式,上接式,下接式,抽拉式,立式,双面接触,单面接触,卧式。触角分别有:180°直插型,90°折弯型,SMT贴片型。    FPC连接器,即柔性印刷电路板连接器,是一种用于连接柔性电路板和PCB板的电子元件。以......
  • 【JavaEE】【多线程】单例模式
    目录一、设计模式1.1单例模式1.1.1饿汉模式1.1.2懒汉模式1.2线程安全问题1.3懒汉模式线程安全问题的解决方法1.3.1原子性问题解决1.3.2解决效率问题1.3.3解决内存可见性问题和指令重排序问题一、设计模式在讲解案例前,先介绍一个概念设计模式:就是大佬们......
  • 多线程(八):阻塞队列 & 生产者消费者模型
    目录1.阻塞队列 2.生产者消费者模型2.1场景举例2.2重要优势2.2.1解耦合 2.2.2削峰填谷2.3付出的代价3.BlockingQueue4.模拟实现阻塞队列4.1wait的注意事项4.2代码实现 1.阻塞队列在数据结构中,我们学习了简单的普通队列,也学习了较为复杂一些......
  • 多线程模块threading
    1.简单例子importthreadingimporttimedefrun(n):print("task",n)time.sleep(2)t1=threading.Thread(target=run,args=("t1",))t2=threading.Thread(target=run,args=("t2",))t1.start()t2.start()2.真使用时需要用类importthreadingcl......