美文网首页
进程间的怎么通信的?线程呢?

进程间的怎么通信的?线程呢?

作者: 就这些吗 | 来源:发表于2020-01-27 03:45 被阅读0次

进程间的通信:

1.无名管道(PIPE)

在内核中申请一块固定大小的缓冲区,程序拥有写入和读取的权利,一般使用fork函数实现父子进程的通信。
速度慢,容量有限,只有父子进程能通讯 (fork),且是单工的。

2.有名管道(FIFO)

在内核中申请一块固定大小的缓冲区,程序拥有写入和读取的权利,没有血缘关系的进程也可以进程间通信。
任何进程间都能通讯,但速度慢

3.消息队列

在内核中创建一队列,队列中每个元素是一个数据报,不同的进程可以通过句柄去访问这个队列。
每个消息队 列的总的字节数是有上限的(MSGMNB),系统上消息队列的总数也有⼀个上限(MSGMNI)
容量受到系统限制,且要注意第一次读的时候,要考虑上一次没有读完数据的问题

4.信号

信号是Linux系统中用于进程之间通信或操作的一种机制,信号可以在任何时候发送给某一进程,而无须知道该进程的状态。如果该进程并未处于执行状态,则该信号就由内核保存起来,知道该进程恢复执行并传递给他为止。如果一个信号被进程设置为阻塞,则该信号的传递被延迟,直到其阻塞被取消时才被传递给进程。

5.信号量

在内核中创建一个信号量集合(本质是个数组),数组的元素(信号量)都是1,使用P操作进行-1,使用V操作+1,
不能传递复杂消息,只能用来同步

6.共享内存区:

将同一块物理内存一块映射到不同的进程的虚拟地址空间中,实现不同进程间对同一资源的共享。共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式。

特点:
1,不用从用户态到内核态的频繁切换和拷贝数据,直接从内存中读取就可以。
2,共享内存是临界资源,所以需要操作时必须要保证原子性。使用信号量或者互斥锁都可以。

6.socket

socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口

线程间:

1.锁
2.信号量

相关文章

  • 进程间的怎么通信的?线程呢?

    进程间的通信: 1.无名管道(PIPE) 在内核中申请一块固定大小的缓冲区,程序拥有写入和读取的权利,一般使用fo...

  • Android 面试常问知识

    Q1:线程间的通信进程间通信的几种方式进程间通信方式详解Q2:线程安全SharePreferences 是否线程安...

  • linux进程间通信(1)

    一、进程通信概述 1、什么是进程间通信?什么是线程间通信? 进程间通信: 进程间通信就指的是用户空间中进程A与进程...

  • ios 多线程的故事4

    线程间通信 线程间通信:在1个进程中,线程往往不是孤立存在的,多个线程之间需要经常进行通信 线程间通信的体现 1个...

  • 浏览器运行原理

    进程 申请和拥有计算机资源 不同进程间通信通过进程间通信管道IPC 线程 一个进程多个线程,每个线程执行不同的任务...

  • iOS进程间通信

    线程间通信 :通过performSelector系列的方法 可以实现 各种线程间的通信(通信 :调用与传参)进程间...

  • python进线程——多进程间的通信

    1. 进程间与线程间通信区别 (1)线程间通信的类与锁在进程间是不适用的,必须使用multiprocessing中...

  • 8.进程间通信与进程池

    进程间通信与进程池 进程间通信-Queue 通常利用multiprocessing模块的Queue实现多线程之间的...

  • 《iOS高级开发之多线程编程之二》

    线程间的通信 在一个进程中,线程往往不是孤立存在的,多个线程之间经常进行通信,称为线程间通信。 NSThread ...

  • 进程间通信,线程间通信

    进程间通信 进程间通信又称IPC(Inter-Process Communication),指多个进程之间相互通信...

网友评论

      本文标题:进程间的怎么通信的?线程呢?

      本文链接:https://www.haomeiwen.com/subject/ubyeactx.html