进程间通信总结:

进程通常被定义为一个正在运行的程序的实例,它由两个部分组成

A.    操作系统用来管理进程的内核对象。内核对象也是系统用来存放关于进程的统计信息的地方

B.    地址空间,它包含所有的可执行模块或DLL模块的代码和数据。它还包含动态分配的空间。如线程堆栈和堆分配空间。每个进程被赋予它自己的虚拟地址空间,当进程中的一个线程正在运行时,该线程可以访问只属于它的进程的内存。属于其它进程的内存则是隐藏的,并不能被正在运行的线程访问。

为了实现进程通信,由以下几种方法可供参考:

1剪贴板Clipboard:16位时代常使用的方式,CWnd中提供支持

2窗口消息标准的Windows消息以及专用的WM_COPYDATA消息 SENDMESSAGE()接收端必须有一个窗口

3. 共享内存方式(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
)找出共享内存

1点对点peer to peer)的形式:

每个进程都必须有相同的能力产生共享内存并将它初始化。每个进程都应该调用CreateFileMapping(),然后调用GetLastError().

如果传回的错误代码是ERROR_ALREADY_EXISTS,那么进程就可以假设这一共享内存区域已经被别的进程打开并初始化了,否则该进程就可以合理的认为自己排在第一位,并接下来将共享内存初始化。

2client/server架构形式:
只有server进程才应该产生并初始化共享内存。所有的进程都应该使用
HANDLE OpenFileMapping(DWORD dwDesiredAccess,
                                   BOOL bInheritHandle,
                                   LPCTSTR lpName);
再调用MapViewOfFile(),取得共享内存的指针

c)同步处理(Mutex)
d
)清理
(Cleaning up) BOOL UnmapViewOfFile(LPCVOID lpBaseAddress);
                        CloseHandle()

4.动态数据交换(DDE
通过维护全局分配内存使得应用程序间传递成为可能
a)
再一块全局内存中手工放置大量的数据
b)
使用窗口消息传递内存指针.这是16WIN时代使用的方式,因为在WIN32下已经没有全局和局部内存了,现在的内存只有一种就是虚存。  

5. 消息管道(Message Pipe)
用于设置应用程序间的一条永久通讯通道,通过该通道可以像自己的应用程 序访问一个平面文件一样读写数据。
a)
匿名管道(Anonymous Pipes)
单向流动,并且只能够在同一电脑上的各个进程之间流动。

b)
命名管道(Named Pipes)
双向,跨网络,任何进程都可以轻易的抓住,放进管道的数据有固定的格式,而使用ReadFile()只能读取该大小的倍数。可以被使用于I/O Completion Ports

6. 邮件槽(Mailslots)
广播式通信,32系统中提供的新方法,可以在不同主机间交换数据,在WIN9X下只支持邮件槽客户

7Windows套接字(Windows Socket)
它具备消息管道所有的功能,同时遵守一套通信标准使得不同操作系统之上的应用程序之间可以互相通信。

8. Internet通信
它让应用程序从Internet地址上载或下载文件

9. RPCRemote Process Communication
远程过程调用,很少使用,因其与UNIXRPC不兼容。

10.串行/并行通信(Serial/Parallel Communication)
   
它允许应用程序通过串行或并行端口与其他的应用程序通信

11.COM/DCOM
通过COM系统的代理存根方式进行进程间的数据交换,但只能够表现在对接口函数的调用时传送数据,通过DCOM可以在不同主机间传送数据。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
图像识别技术在病虫害检测中的应用是一个快速发展的领域,它结合了计算机视觉和机器学习算法来自动识别和分类植物上的病虫害。以下是这一技术的一些关键步骤和组成部分: 1. **数据收集**:首先需要收集大量的植物图像数据,这些数据包括健康植物的图像以及受不同病虫害影响的植物图像。 2. **图像预处理**:对收集到的图像进行处理,以提高后续分析的准确性。这可能包括调整亮度、对比度、去噪、裁剪、缩放等。 3. **特征提取**:从图像中提取有助于识别病虫害的特征。这些特征可能包括颜色、纹理、形状、边缘等。 4. **模型训练**:使用机器学习算法(如支持向量机、随机森林、卷积神经网络等)来训练模型。训练过程中,算法会学习如何根据提取的特征来识别不同的病虫害。 5. **模型验证和测试**:在独立的测试集上验证模型的性能,以确保其准确性和泛化能力。 6. **部署和应用**:将训练好的模型部署到实际的病虫害检测系统中,可以是移动应用、网页服务或集成到智能农业设备中。 7. **实时监测**:在实际应用中,系统可以实时接收植物图像,并快速给出病虫害的检测结果。 8. **持续学习**:随着时间的推移,系统可以不断学习新的病虫害样本,以提高其识别能力。 9. **用户界面**:为了方便用户使用,通常会有一个用户友好的界面,显示检测结果,并提供进一步的指导或建议。 这项技术的优势在于它可以快速、准确地识别出病虫害,甚至在早期阶段就能发现问题,从而及时采取措施。此外,它还可以减少对化学农药的依赖,支持可持续农业发展。随着技术的不断进步,图像识别在病虫害检测中的应用将越来越广泛。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值