首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

POCO C++库学习跟分析 - 进程

2013-03-13 
POCO C++库学习和分析 -- 进程POCO C库学习和分析 -- 进程Poco::Foundation库中涉及进程的内容主要包括了4

POCO C++库学习和分析 -- 进程
POCO C++库学习和分析 -- 进程


       Poco::Foundation库中涉及进程的内容主要包括了4个主题,分别是进程(Process)、进程间同步(inter-process synchronization)、管道(Pipes)、共享内存(Shared Memory)。我们都知道管道、共享内存、网络通讯是进程间数据交互的3种基本方式。由于网络通讯足够复杂,在Poco的结构划分里被单独分成了一个库Net,Foundation库中并没有涉及。下面一一介绍:


1. 进程

       关于中的进程其实没有什么可说的,不管是其内部实现还是外部使用都非常的简单。内部实现上只不过是不同操作系统进程API的封装,下面是它的类图:

POCO C++库学习跟分析 - 进程


       在Poco中进程类的所有成员函数都是静态函数。主要的功能函数覆盖3个方面:

      1. 创建新进程

      2. 销毁其他进程

      3. 获取当前进程信息


       值得注意的是,在Poco中进程创建时,可以对进程的I/O进程重定向。其函数如下:



3. 管道

       我们都知道管道是一个单向的通讯通道,或者用来读或者用来写。如果两个进程间要实现双向的通讯,必须在进程之间创建两个管道。Poco库中也封装了管道方便进程通讯,但Poco库中对于管道的读写,却不是通过管道的本身,而是通过Poco::PipeOutputStream和Poco::PipeInputStream 两个类。这样的话,便可以实现和标准库流操作的无缝结合。

       下面是一个例子来说明这几者的关系:



4. 共享内存

       在Poco库中,Poco::SharedMemory类用于实现共享内存功能。它支持两种创建方式:

       1.从确定大小的内存区域

       2. 从文件(通过把文件映射入共享内存区域)


       而在接口上,Poco::SharedMemory只外露了两个接口:



      例子一:

// Share a memory region of 1024 bytes#include "Poco/SharedMemory.h"using Poco::SharedMemory;int main(int argc, char** argv){SharedMemory mem("MySharedMemory", 1024,SharedMemory::AM_READ | SharedMemory::AM_WRITE);for (char* ptr = mem.begin(); ptr != mem.end(); ++ptr){*ptr = 0;}return 0;}


(版权所有,转载时请注明作者和出处  http://blog.csdn.net/arau_sh/article/details/8648181)


     


热点排行