首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏胡飞洋的Android进阶

    进程通信的方式(2

    同时,Messenger的作用主要是为了传递消息,很多时候我们可能需要跨进程调用服务端的方法,这种情形用Messenger就无法做到了,但是我们可以使用AIDL来实现跨进程的方法调用。 这里先介绍使用AIDL 来进行进程通信的流程,分为服务端和客户端两个方面。 2、下面继续《艺术探索》中关于AIDL的进阶知识: 1)进程的Listener 假设有一种需求:用户不想时不时地去查询图书列表了,太累了,于是,他去问图书馆,“当有新书时能不能把书的信息告诉我呢?”。 2)RemoteCallbackList 如果你以为AIDL就这样结束了,那你就错了,AIDL远不止这么简单,目前我们还有一些难点还没有涉及。 别忘了对象是不能跨进程直接传输的,对象的跨进程传输本质上都是反序列化的过程,这就是为什么AIDL中的自定义对象都必须要实现Parcelable接口的原因。 那么我们要怎么做才能实现解注册的功能?

    1.5K10发布于 2020-07-23
  • 来自专栏宇宙之_一粟

    进程通信

    进程通信就是在不同进程之间传播或交换信息,那么不同进程之间存在着什么双方都可以访问的介质呢? 首先,进程通信至少可以通过传送、打开文件来实现,不同的进程通过一个或多个文件来传递信息,事实上,在很多应用系统里都使用了这种方法。 但一般说来,进程通信(Inter Process Communication,IPC)不包括这种似乎比较低级的通信方法。 UNIX系统中实现进程通信的方法很多,而且不幸的是,极少方法能在所有的UNIX系统中进行移植(唯一一种是半双工的管道,这也是最原始的一种通信方式)。 其中,前面4种主要用于同一台机器上的进程通信,而套接字则主要用于不同机器之间的网络通信

    1.2K10编辑于 2022-05-13
  • 来自专栏LeetCode

    进程通信

    进程通信(IPC)介绍 进程通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。 它只能用于具有亲缘关系的进程之间的通信(也是父子进程或者兄弟进程之间)。 它可以看成是一种特殊的文件,对于它的读写也可以使用普通的read、write 等函数。 信号量用于实现进程的互斥与同步,而不是用于存储进程通信数据。 1、特点 信号量用于进程同步,若要在进程传递数据需要结合共享内存。 image.png 五种通讯方式总结 1.管道<无名管道>:速度慢,容量有限,只有父子进程能通讯     2.FIFO<有名管道>:任何进程都能通讯,但速度慢     3.消息队列:容量受到系统限制 ,另一个进程要注意读写的问题,相当于线程中的线程安全,当然,共享内存区同样可以用作线程通讯,不过没这个必要,线程本来就已经共享了同一进程内的一块内存

    1.2K20发布于 2019-03-12
  • 来自专栏CSDN搜“看,未来”

    进程通信

    怎么做(文中所有蓝色字体都可以点击进去) 前面提到进程通信的几种方式这里进行一个铺开 1.半双工管道 由于管道仅仅是将一个进程的读端和另一个进程的写端连通的单通信方法,所以又叫“半双工管道”。 2.消息队列 是什么 1、消息队列是内核地址空间中的内部链表,通过Linux内核在不同的进程传递消息。 2、消息顺序的发送到消息队列中,并以几种不同的方式从队列中获取。 1、共享内存是在多个进程之间共享内存区域的一种进程通信方式。 2、它是在多个进程通过对指定内存段进行映射实现内存共享的。 3、这是IPC最快捷的方式,因为它没有中间商赚差价。 4、多个进程共享的是同一块物理空间,仅仅是挂载地址不同而已,因此不需要进行复制,可以直接使用这段空间。 怎么用呢?源码呢? 2、···未完待续···

    80420发布于 2020-08-26
  • 来自专栏CSDN搜“看,未来”

    进程通信

    可以理解为内存中的一个缓冲区,用于将某个进程的数据流导入,由某一个进程导出,实现通信。 再通俗的说,看图: ? 晓得了吧 这个pipe管道可以理解为匿名管道,是基于文件描述符的通信方式,使用时两个进程必须有血缘关系,父子进程之间的通信2、只能够用于有血缘关系(父子,兄弟,爷孙)的进程之间,多常用于父子之间 3、管道内部自带同步机制:子进程写一条,父进程读一条 4、管道的生命周期为随进程进程结束管道就没了 5、管道内没有数据时 } close(infd); close(outfd); //关闭有名管道 return 0; } 有名管道也有·自己的独特之处: 可以进行不相干进程通信 read/write 共享内存可以说是最有用的进程通信方式,也是最快的IPC形式。

    1.2K20发布于 2020-08-26
  • 来自专栏基础知识文章

    进程通信

    进程通信介绍 进程通信目的 数据传输:一个进程需要将它的数据发送给另一个进程。 资源共享:多个进程之间共享同样的资源。 进程通信发展 管道 System V进程通信 POSIX进程通信 管道 什么是管道 管道是Unix中最古老的进程通信的形式。 管道特点 只能用于具有共同祖先的进程之间进行通信;通常,一个管道由一个进程创建,然后该进程调用fork,此后父、子进程之间就可应用该管道。 命名管道 管道应用的一个限制就是只能在具有共同祖先的进程通信。 如果我们想在不相关的进程之间交换数据,可以使用FIFO文件来做这项工作,它经常被称为命名管道。 ,因此各进程竞争使用这些资源,进程的这种 关系为进程的互斥 系统中某些资源一次只允许一个进程使用,称这样的资源为临界资源或互斥资源。

    1.4K20发布于 2020-08-27
  • 来自专栏Java Study

    进程通信

    进程通信 方式 直接看大佬的 文章 https://mp.weixin.qq.com/s/mblyh6XrLj1bCwL0Evs-Vg linux 中的管道 其实所谓的管道 ,就是内存中的一串缓存 创建匿名的管道 : int pipe(int fd[2]) 使用 fork 创建子进程,创建的子进程会 复制父进程的文件描述符 ,这样就做到了两个进程各有两个「 fd[0] 与 fd[1]」, 两个进程就可以通过各自的 因为管道没有实体,也就是没有另外,对于命名管道,它可以在不相关的进程也能相互通信。 因为命令管道,提前创建了一个类型为管道的设备文件,在进程里只要使用这个设备文件,就可以相互通信。 信号量其实是一个整型的计数器,主要用于实现进程的互斥与同步,而不是用于缓存进程通信的数据。 !信号量表示资源的数量! 用途完全不一样 上面说的进程通信,都是常规状态下的工作模式。

    1.1K00发布于 2020-08-10
  • 来自专栏IT技术精选文摘

    进程通信

    你看,张三因面试没准备好,吹空调的时间只有 5 分钟,来回路上花了 2 小时晒太阳,你说惨不惨? 所以啊,炎炎夏日,为了能延长吹空调的时间,我们应该在面试前准备得更充分些,吹空调时间是要自己争取的。 很明显,在这一场面试中, 张三在进程通信这一块没复习好,虽然列出了进程通信的方式,但这只是表面功夫,应该需要进一步了解每种通信方式的优缺点及应用场景。 说真的,我们这次一起帮张三一起复习下,加深他对进程通信的理解,好让他下次吹空调的时间能长一点。 正文

    74320编辑于 2022-02-17
  • 来自专栏陶士涵的菜地

    进程通信

    1.管道(Pipe)及有名管道(namedpipe):管道可用于具有亲缘关系进程通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程通信 2.信号 (Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程通信外,进程还可以发送信号给进程本身;linux除了支持Unix早期信号语义函数sigal外,还支持语义符合Posix 共享内存:使得多个进程可以访问同一块内存空间,是最快的可用IPC形式.是针对其他通信机制运行效率较低而设计的.往往与其它通信机制,如信号量结合使用,来达到进程的同步及互斥. 4.信号量(semaphore ):主要作为进程以及同一进程不同线程之间的同步手段。 5.套接口(Socket):更为一般的进程通信机制,可用于不同机器之间的进程通信.起初是由Unix系统的BSD分支开发出来的,但现在一般可以移植到其它类Unix系统上:Linux和SystemV的变种都支持套接字

    99120发布于 2019-09-10
  • 来自专栏DevOps

    C++进程通信 详解2

    要交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把数据读走,内核提供的这种机制称为 进程通信(IPC,InterProcess Communication 现今常用的进程通信方式有: 1)管道 (使用最简单) 2)信号 (开销最小) 3)共享映射区 (无血缘关系) 4)本地套接字 (最稳定) 进程通信方法介绍 1. (2) 管道未满,write将数据写入,并返回实际写入的字节数。 练习1:使用管道实现父子进程通信,完成:ls | wc -l。假定父进程实现ls,子进程实现wc? 实现父进程ls 子进程wc -l 父子进程实现ps aux | grep bash 练习2:使用管道实现兄弟进程通信。 兄:ls 弟: wc -l 父:等待回收子进程? 11. mmap父子进程通信 父子等有血缘关系的进程之间也可以通过mmap建立的映射区来完成数据通信

    1.5K10编辑于 2024-03-29
  • 来自专栏伟大程序猿的诞生

    IPC进程通信进程通信

    概念 进程:一个JVM就是一个进程 线程:最小的调度单元 一个进程可以包含多个线程,在安卓中有一个主线程也就是UI线程,UI线程才可以操作界面,如果在一个线程里面进行大量耗时操作在安卓中就会出现 ANR(Application Not Responding) Android中IPC来源 IPC不是安卓中独有的 ,比如Windows中通过剪贴板,管道,油槽等进行进程通信,Linux通过命名管道, 共享内容,信号量等进行进程通信,虽然Android基于Linux但是不完全继承Linux,Android中独特的进程通信Binder,同时也支持socket。 Android进程通信通常用在如下几个方面 当应用中某个模块需要单独运行在某个进程中;或者相同通过多个进程来扩大应用的内存;当前应用需要向其他应用获取数据(其实COntenProvider去查询数据也是跨进程通信只不过底层分装之后我们察觉不到而已 Android如何开启多进程 这里只讨论一个APP内的多进程,暂不讨论两个应用之间的多进程 这里我们目前讨论正规方式:通过Androidmenifest文件中给四大组件(Activity,BroadCast

    1.4K20发布于 2019-01-21
  • 来自专栏全栈程序员必看

    进程的7种通信方式_linux 进程通信

    ,内核提供的这种机制称为进程通信。 int pipe (int fd[2]); 通过匿名管道实现进程通信的步骤如下: 父进程创建管道,得到两个⽂件描述符指向管道的两端 父进程fork出子进程,⼦进程也有两个⽂件描述符指向同⼀管道。 详细可参考文章:进程通信方式——pipe(管道) 2 高级管道通信 ---- 高级管道(popen):将另一个程序当做一个新的进程在当前程序进程中启动,则它算是当前程序的子进程,这种方式我们成为高级管道方式 共享内存是最快的 IPC 方式,它是针对其他进程通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号两,配合使用,来实现进程的同步和通信。 8 套接字通信 ---- 套接字( socket ) : 套接口也是一种进程通信机制,与其他通信机制不同的是,它可用于不同机器进程通信

    3.5K20编辑于 2022-11-07
  • 来自专栏全栈程序员必看

    linux多进程进程通信_linux共享内存进程通信

    内存共享最新整理: Linux下进程通信-共享内存 – 码到城攻共享内存可以说是最有用的进程通信方式,也是最快的IPC形式 https://www.codecomeon.com/posts /109/ 共享内存: 一、概念: 共享内存可以说是最有用的进程通信方式,也是最快的IPC形式。 对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝, 而共享内存则只拷贝两次数据[1]: 1.一次从输入文件到共享内存区, 2.另一次从共享内存区到输出文件。 实际上,进程之间在共享内存时,并不总是读写少量数据后就解除映射,有新的通信时,再重新建 立共享内存区域。而是保持共享区域,直到通信完毕为止,这样,数据内容一直保存在共享内 存中,并没有写回文件。 2、shmat函数 第一次创建完共享内存时,它还不能被任何进程访问,shmat函数的作用就是用来启动对该共享内存的访问,并把共享内存连接到当前进程的地址空间。

    5.6K30编辑于 2022-11-07
  • 来自专栏python3

    python 进程通信

    = Process(target=f,args=(i,)) p.start() process_list.append(p) for j in process_list: j.join() 进程通信 进程同步 multiprocessing contains equivalents of all the synchronization primitives from threading. Process(target=f,args=(i,)) p.start() process_list.append(p) for j in process_list: j.join() 进程共享状态 4} {2: 4, 3: 9} {2: 4, 3: 9, 4: 16} {1: 1, 2: 4, 3: 9, 4: 16} {1: 1, 2: 4, 3: 9, 4: 16, 5: 25} {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25} {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36} {0: 0, 1: 1, 2

    88210发布于 2020-01-09
  • 来自专栏Helloted

    进程线程通信

    一、线程通信 因为线程是共享内存空间的,所以线程通信相比于进程通信会简单一些,线程通信的体现 1个线程传递数据给另1个线程 在1个线程中执行完特定任务后,转到另1个线程继续执行任务 在iOS多线程开发中 mainQueue] addOperationWithBlock:^{ self.imageView.image = image; }]; }]; 二、进程通信 /APP通信 进程是容纳运行一个程序所需要所有信息的容器。 在iOS中每个APP里就一个进程,所以进程通信实际上是APP之间的通信。 Keychain用于App通信的一个典型场景也和app的登录相关,就是统一账户登录平台。

    1K50编辑于 2022-06-07
  • 来自专栏小豪成长日记

    node进程通信

    并且进程内的线程是共享进程资源的,处于同一地址空间,所以切换和通信相对成本小,而进程可以理解为没有公共的包裹容器。 但是如果进程需要通信的话,也需要一个公共环境或者一个媒介,这个就是操作系统。 ,也可以说是主进程的拷贝,返回的ChildProcess中会内置额外的通信通道,也就是IPC通道,允许消息在父子进程传递,例如通过文件描述符,不过由于创建的是匿名通道,所以只有主进程可以与之通信,其他进程无法进行通信 上面提及了很多可以实现进程通信的方式,那node进程通信是以什么为基础的呢? 其实本质上来说进程通信是利用内核管理一块内存,不同进程可以读写这块内容,进而可以互相通信,当然,说起来简单,做起来难。有兴趣的朋友可以自行研究。 部分图片来源网络,侵权立删 参考链接 进程、线程、协程 文件描述符 IPC IPC2

    53020编辑于 2023-10-22
  • 来自专栏数据人生

    进程通信(IPC)

    进程存在很多通信方式,本文将介绍几种常用的。 套接字socket 传输快且稳定,可用于不同机器进程通信。 共享内存shared memory 映射一段能被多个进程访问的内存区域。 共享内存由一个进程创建,但多个进程可以访问。共享内存是最快的IPC方式,专门为解决其他IPC方式速度慢而设计的,常和其他通信机制,如信号量配合使用,来实现进程的同步和通信。 信号量semophere 是一个计数器,可以用于控制多个进程对共享信息的访问。可提供锁服务,防止某个进程正在访问共享资源的时候,其他进程访问该资源。 因此,其主要作为进程、同一进程不同线程的同步手段。 信号signal 用于通知接收进程某事件已经发生 管道pipe 是一个固定大小的文件,对pipe的读操作是一次性操作,数据一旦被读,他将从pipe中删除,释放空间以写入更多的数据。

    1K30编辑于 2022-09-29
  • 来自专栏猿计划

    进程通信

    文章目录 1、进程通信 (1)概述 (2)我们为什么需要进程通信 (3)进程通信的8种方法 1、无名管道通信 2、高级管道通信 3、有名管道通信 4、消息队列通信 5、信号量通信 6、信号 7、共享内存通信 8、套接字通信 (4)无名管道和有名管道的联系和区别 1、联系 2、区别 (5)各个通信方式的讲解 1、进程通信 (1)概述 先看一段来自百度百科的解释: 进程通信(IPC,Interprocess (2)我们为什么需要进程通信 有这个进程通信这个概念或者说是功能的出现,就代表一定有它该出现的理由。例如药的出现就是为了治疗疾病,超级笔记本的出现就是为了解决普通笔记本厚重的问题。 2、高级管道通信 高级管道(popen):将另一个程序当做一个新的进程在当前程序进程中启动,则它算是当前程序的子进程,这种方式我们成为高级管道方式。 8、套接字通信 套接字( socket ) : 套接口也是一种进程通信机制,与其他通信机制不同的是,它可用于不同机器进程通信

    97331发布于 2020-10-26
  • 来自专栏python3

    进程通信

    print(waiting_analysis_data) def main(): # 1.创建一个队列 q = multiprocessing.Queue() # 2. 创建多个进程,将队列的引用当做实参进行传递到里面 p1 = multiprocessing.Process(target=download_from_web, args=(q,)) p2 = multiprocessing.Process(target=analysis_data, args=(q,)) p1.start() p2.start() if __name

    76320发布于 2020-01-17
  • 来自专栏ZackSock

    Python进程通信

    进程通信 - Queue Process 之间有时需要通信,操作系统提供了很多机制来实现进程通信。 例如:在程序中我们可以使用文件、消息队列(Queue)等。 Queue def queue_test(): q = Queue(3) #初始化一个Queue对象,最多可接收三条put消息 q.put("消息1") q.put("消息2" ,第二个Try会立刻抛出异常 try: q.put("消息4",True,2) except: print("消息列队已满,现有消息数量:%s"%q.qsize main__": main() 运行结果: ----start---- 2开始执行,进程号为3248 2 执行完毕,耗时0.40 3开始执行,进程号为3248 3 执行完毕,耗时0.60 下面的实例演示了进程池中的进程如何通信: # -*- coding:utf-8 -*- import os,time,random from multiprocessing import Manager

    83320发布于 2021-04-13
领券