进程间通讯的方法

Java进程之间通信方式&线程之间通信的方式 进程之间通信方式 (1) 管道(PIPE) (2) 命名管道(FIFO) (3) 信号量(Semphore) (4) 消息队列(MessageQueue) (5) 共享内存(SharedMemory) (6) Socket Java如何支持进程间通信。我们把Java进程理解为JVM进程。很明显,传统的这些大部分技术是无法被我们的应用程序利用了(这些进程间通信都... 阅读详情
原文出处: http://www.wangchao.net.cn/bbsdetail_45212.html   进程通常被定义为一个正在运行的程序的实例,它由两个部分组成:
   一个是操作系统用来管理进程的内核对象。内核对象也是系统用来存放关于进程的统计信息的地方
   另一个是地址空间,它包含所有的可执行模块或DLL模块的代码和数据。它还包含动态分配的空间。如线程堆栈和堆分配空间。每个进程被赋予它自己的虚拟地址空间,当进程中的一个线程正在运行时,该线程可以访问只属于它的进程的内存。属于其它进程的内存则是隐藏的,并不能被正在运行的线程访问。
   为了能在两个进程之间进行通讯,由以下几种方法可供参考:
  0。剪贴板Clipboard: 在16位时代常使用的方式,CWnd中提供支持
  1。窗口消息 标准的Windows消息以及专用的WM_COPYDATA消息 SENDMESSAGE()接收端必须有一个窗口
  2。使用共享内存方式(Shared Memory)
   a.设定一块共享内存区域
   HANDLE CreateFileMapping(HANDLE,LPSECURITY_ATTRIBUTES, DWORD, DWORD, DWORD, LPCSTR)
   产生一个file-mapping核心对象
   LPVOID MapViewOfFile(
   HANDLE hFileMappingObject,
   DWORD dwDesiredAcess,
   DWORD dwFileOffsetHigh,
   DWORD dwFileOffsetLow,
   DWORD dwNumberOfBytesToMap
   );
   得到共享内存的指针
   b.找出共享内存
   决定这块内存要以点对点(peer to peer)的形式呈现
   每个进程都必须有相同的能力,产生共享内存并将它初始化。每个进程
   都应该调用CreateFileMapping(),然后调用GetLastError().如果传回的
   错误代码是ERROR_ALREADY_EXISTS,那么进程就可以假设这一共享内存区 域已经被别的进程打开并初始化了,否则该进程就可以合理的认为自己 排在第 一位,并接下来将共享内存初始化。
   还是要使用client/server架构中
   只有server进程才应该产生并初始化共享内存。所有的进程都应该使用
  HANDLE OpenFileMapping(DWORD dwDesiredAccess,
   BOOL bInheritHandle,
   LPCTSTR lpName);
   再调用MapViewOfFile(),取得共享内存的指针
   c.同步处理(Mutex)
   d.清理(Cleaning up) BOOL UnmapViewOfFile(LPCVOID lpBaseAddress);
   CloseHandle()
  3。动态数据交换(DDE)通过维护全局分配内存使的应用程序间传递成为可能
   其方式是再一块全局内存中手工放置大量的数据,然后使用窗口消息传递内存 指针.这是16位WIN时代使用的方式,因为在WIN32下已经没有全局和局部内存 了,现在的内存只有一种就是虚存。
  4。消息管道(Message Pipe)
   用于设置应用程序间的一条永久通讯通道,通过该通道可以象自己的应用程序
   访问一个平面文件一样读写数据。
   匿名管道(Anonymous Pipes)
   单向流动,并且只能够在同一电脑上的各个进程之间流动。
   命名管道(Named Pipes)
   双向,跨网络,任何进程都可以轻易的抓住,放进管道的数据有固定的格 式,而使用ReadFile()只能读取该大小的倍数。
   可以被使用于I/O Completion Ports
  5 邮件槽(Mailslots)
   广播式通信,在32系统中提供的新方法,可以在不同主机间交换数据,在 WIN9X下只支持邮件槽客户
  6。Windows套接字(Windows Socket)
   它具备消息管道所有的功能,但遵守一套通信标准使的不同操作系统之上的应 用程序之间可以互相通信。
  7。Internet通信 它让应用程序从Internet地址上载或下载文件
  8。RPC:远程过程调用,很少使用,因其与UNIX的RPC不兼容。
  9。串行/并行通信(Serial/Parallel Communication)
   它允许应用程序通过串行或并行端口与其他的应用程序通信
  10。COM/DCOM
   通过COM系统的代理存根方式进行进程间数据交换,但只能够表现在对接口 函数的调用时传送数据,通过DCOM可以在不同主机间传送数据。
CMOS锁相环核心:四种鉴频鉴相器(PFD)结构深度剖析与选型指南 本文深入剖析了CMOS锁相环中四种鉴频鉴相器(PFD)的结构与性能,包括传统RS触发器型、非时钟型、预充电型和边沿触发型PFD。通过详细的电路分析、实测数据和工程案例,提供了PFD选型的实用指南,帮助工程师根据速度、功耗和精度需求选择最优方案,提升锁相环设计效率。 阅读详情

相关推荐

股票行情接口,最全的接入方法

股票行情接口一般有两种,一种是WebSocket,一种是http,通过WebSocket可以获取逐笔的股票tick数据,实时并且高效;通过http接口可以获取股票行情接口中的股票历史数据;WebSocket是一种高效的双向通信协议,它允许数据的实时推送,避免了不断的轮询请求。其次,WebSocket允许您订阅特定的数据源或股票数据产品,只接收您感兴趣的信息,提高了数据的效率和可用性。通过接入股票行情数据的HTTP接口,您可以将数据导入到自己的分析工具或系统中,进行更深入的数据分析、模型构建和决策支持。

apifinance的博客 3423

进程之间的通信方式图解

目录进程间通信示意图管道(pipe)信号量(semophore)消息队列(message queue)信号 (sinal)共享内存(shared memory)套接字(socket)几种通信方式的比较 进程间通信示意图 管道(pipe) 管道包括三种: 普通管道PIPE:通常有两种限制,一是单工,只能单向传输;二是只能在父子或者兄弟进程间使用. 流管道s_pipe:去除了第一种限制,为半双工,只能在父子或兄弟进程间使用,可以双向传输. 命名管道:name_pipe:去除了第二种限制,可以在许多并不相关的

小螺号的博客 1838

从玩具到工业:手把手教你用Webots仿真Scara抓取(逆解实战篇)

本文详细介绍了如何在Webots仿真环境中实现Scara机械臂的逆解计算与抓取操作,涵盖从环境配置、逆运动学算法到轨迹规划与实时控制的完整流程。通过实战案例演示,帮助读者掌握机械臂逆解的核心技术,并应用于工业自动化场景,提升Scara机械臂的编程与控制能力。

weixin_30932215的博客 504

TCP/IP详解 卷1:协议 学习笔记 第二十五章 SNMP:简单网络管理协议

随着网络技术的发展,网络数量越来越多,网络中的设备来自不同厂家,如何管理这个设备变得十分重要。 基于TCP/IP的网络管理包含两个部分:网络管理站(也叫管理进程,manager)和被管理的网络单元(也叫被管设备,包括路由器、X终端、终端服务器、打印机等运行TCP/IP协议的设备)。 ...

tus00000的博客 2184

双目视觉三维重构(一)————简介

优快云中关于立三维重构的介绍层出不穷,CNKI中也有各类综述对三维重构进行总结,撰写这篇博客仅作为本人对该类博客、论文的总结学习,加深自身学习的印象、作为学习的笔记。如有错误的地方,欢迎指正。   1、三维重构 1.1、三维重构到底是什么?   首先要了解立体匹配算法,首先要知道立体匹配算法主要具体应用于什么方向。 三维重构又被称为三维重建,百度百科中对它的定义为:指对三维物体建立适合...

qq_39634612的博客 1万+

Python量化入门:用pytdx获取800个交易日K线数据的完整指南(附代码)

本文为Python量化交易初学者提供了使用pytdx库免费获取股票日线级别K线数据的完整指南。文章详细介绍了从环境搭建、单只股票数据获取,到构建健壮的批量下载器、数据清洗与验证,再到基础分析与可视化的全流程,并附有可直接运行的代码示例,帮助读者快速建立本地股票数据库。

weixin_29050513的博客 1462

TCP/IP学习笔记(七)

TCP/IP学习笔记(七)一、SNMP:简单网络管理协议  基于TCP/IP的网络管理包括两部分:网络管理站(manager)和被管理的网络单元(被管设备)。这些被管设备的共同点就是都运行TCP/IP协议。管理进程和代理进程之间的通信有两种方式,一种是管理进程向代理进程发出请求,询问参数值,另一种方式是代理进程主动向管理进程报告某些重要的事件。基于TCP/IP的网络管理包含3个组成部分:  (

深之JohnChen的专栏 1935

基于多智能体深度强化学习的空地协同通信系统轨迹设计与访问控制

所属子方向: UAV assisted communication 名词注释 coordinated:协调、协同 base stations 基站,公用移动通信基站,是移动设备接入互联网的接口设备,是指在一定的无线电覆盖区中,通过移动通信交换中心,与移动电话终端之间进行信息传递的无线电收发信电台。 UAV-BS:无人机基站 cooperative-competitive game:合作竞争博弈 throughput :吞吐量,每秒比特数 bps,bits per second Determinis

skysys的研究小屋 4969

进程管理——进程通信

一、概述 1、进程通信 进程之间可以直接以较高的速率传输较多的数据和信息的信息交换方式 2、三种基本进程通信方式 (1)、消息传递系统 (2)、共享存储器系统 (3)、管道通信系统 二、消息传递 假如通信的进程之间不存在可直接访问的共享空间,必须利用操作系统提供的通信类系统调用来实现进程间通信 发送原语:send(接收者进程,发送区首地址) 接收原语:receive(发送者进程,接收区首地址) 发...

qq_43581718的博客 1076

BQ27220燃料计量芯片与Arduino库kode_bq27220实战指南

燃料计量(Fuel Gauge)是嵌入式电池管理系统的核心技术,通过电压、电流、温度多维建模实现荷电状态(SOC)与健康状态(SOH)的动态估算。其原理基于电化学阻抗补偿算法(如CEDV),区别于简单电压查表法,具备自学习与老化适应能力。该技术显著提升便携设备续航预测精度与低功耗可靠性,广泛应用于TWS耳机、可穿戴设备及医疗电子等场景。本文围绕TI BQ27220高精度燃料计量IC及其配套Arduino库kode_bq27220展开,覆盖硬件连接规范、I²C初始化要点、SOC/SOH实时读取、EDV阈值配置

weixin_35671843的博客 331

置顶必读(1) |《滚雪球学SpringBoot 3.x》· 高质量专栏介绍,你值得拥有!

《滚雪球学SpringBoot 3.x》 并不是普通的技术讲解合集,它是专为开发者精心设计的系统化学习路径。通过不断“滚动学习”,我们将带领你从基础入门到高阶应用,从理解每一行代码到设计和优化大规模分布式系统,最终帮助你成长为一位精通 spring架构 的工程师。

**My Coding Family** 12万+

进程间通讯方法总结

进程间通讯方法总结 进程通常被定义为一个正在运行的程序的实例,它由两个部分组成:   一个是操作系统用来管理进程的内核对象。内核对象也是系统用来存放关于进程的统计信息的地方   另一个是地址空间,它包含所有的可执行模块或DLL模块的代码和数据。它还包含动态分配的空间。如线程堆栈和堆分配空间。每个进程被赋予它自己的虚拟地址空间,当进程中的一个线程正在运行时,该线程可以访问只属于它的进程的内存。属

夜空的流星的专栏 801

NVIDIA AI 学习与认证指南:从入门到精通

NVIDIA的AI学习与认证体系,凭借其先进的技术背景、丰富的课程资源以及强大的行业认可度,已成为AI学习者和从业者的宝贵资源。通过深入学习NVIDIA的课程和获得认证,学习者可以快速掌握最前沿的AI技术,提升自己的职业竞争力。从基础课程到专业认证,NVIDIA为不同层次的学习者提供了量身定制的学习资源,帮助他们掌握AI的核心技能,提升职业竞争力。是其中的一个亮点,它结合了信息检索与生成式AI的能力,使AI可以从外部知识库中实时提取信息,生成更具深度和准确性的内容。,帮助学习者快速掌握该领域的核心技术。

高校图书馆高级系统架构师/研究馆员,推动高校AI从概念演示到可评审、可交付、可运维:路线图与立项评审、PoC交付、评测回归与上线运维(Baseline/Eval/Ops)。 1877

进程间通讯方法

进程间通讯方法 进程通常被定义为一个正在运行的程序实例,它由两个部分组成: 一个是操作系统用来管理进程的内核对象。内核对象也是系统用来存放关于进程的统计信息的地方; 另一个是地址空间,它包含所有的可执行模块或DLL模块的代码和数据。它还包含动态分配的空间。如线程堆栈和堆分配空间。每个进程被赋予它自己的虚拟地址空间,当进程中的一个线程正在运行时,该线程可以访问只属于它的进程的内存。属于其它进程...

《好好先生》专栏 214

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

进程间通讯实现方法

进程间通讯实现方法      进程通常被定义为一个正在运行的程序的实例,它由两个部分组成:       一个是操作系统用来管理进程的内核对象。内核对象也是系统用来存放关于进程的统计信息的地方      另一个是地址空间,它包含所有的可执行模块或DLL模块的代码和数据。它还包含动态分配的空间。如线程堆栈和堆分配空间。每个进程被赋予它自己的虚拟地址空间,当进程中的一个线程正在运行时,该线程可以访问

深之JohnChen的专栏 4306

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

【zz】进程间通讯的方法

进程间通讯的方法     转载自 JoeyBao 的 Blog 进程通常被定义为一个正在运行的程序的实例,它由两个部分组成:       一个是操作系统用来管理进程的内核对象。内核对象也是系统用来存放关于进程的统计信息的地方      另一个是地址空间,它包含所有的可执行模块或DLL模块的代码和数据。它还包含动态分配的空间。如线程堆栈和堆分配空间。每个进程被赋予它自己的虚拟地址空间,当进程中的

wuhran的Blog-C++,Linux,MySQL,PHP 846

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

进程间的通讯实现(IPC)的11种方法

进程间的通讯实现(IPC)的11种方法  

tanliyoung的专栏 1239

进程间通讯的几种方法

    Delphi深度编程及其项目应用开发   进程间的通讯     进程间的通讯,可用以下方法进行:1. Windows消息(WM_CopyData)2. 全局原子3. 内存文件映射4. 命名管道5. 邮槽等...

注重长远 天天积累 cqujsjcyj 171

进程间通讯方法总结(转)

 进程间通讯方法总结 进程通常被定义为一个正在运行的程序的实例,它由两个部分组成:   一个是操作系统用来管理进程的内核对象。内核对象也是系统用来存放关于进程的统计信息的地方   另一个是地址空间,它包含所有的可执行模块或DLL模块的代码和数据。它还包含动态分配的空间。如线程堆栈和堆分配空间。每个进程被赋予它自己的虚拟地址空间,当进程中的一个线程正在运行时,该线程可以访问只属于它的进程的内

babafall的专栏 695
上一篇: 利用SendMessage实现C#进程间通信
下一篇: C#共享内存操作类(含源码)
forlinux
博客等级 码龄21年 53粉丝 95原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值