进程和线程 一 进程的基本信息和通信

来源:互联网 发布:双11淘宝报名入口 编辑:程序博客网 时间:2024/05/29 15:06

         在所做的项目中,我觉得就是这样几个模块(1.界面布置   2.数据库操作   3.网络通信    4.进程和多线程的处理)。每个模块的好坏都决定着整个项目。我自己觉得多线程处理学的最差,那么就从你开始了(总结和再学习)。

       在我们使用电脑的过程中会发现,当我们点击.exe文件时,就会运行一个程序,在任务管理器中会在进程一栏中找到我们对应的进程(PID等信息),但在没有点击时,他们只是以文件的形式存放在我们的电脑中,他们是如何运作的呢?

      先来看一下进程的定义:从开发者的角度来理解的话,进程就是一个容器,其中包括了代码段、数据段、进程段、进程使用的资源、环境代码块、线程等内容。也就是说进程被创建后只是提供了空间,不会执行任何动作,也就是所谓的进程是不活泼的.那么程序也就是通过线程来服务的了。一旦一个进程得到了创建,就会有一个主线程被创建来执行进程地址空间中的代码。

      对于进程的操作:1.进程的创建(我所在的开发环境为VC6.0),可以创建子程序来直接调用计算机中的应用程序(其实我觉得没什么实用性的,无非就是加个按钮可以快捷的打开某个应用程序)     2.进程的终止: 方法有三种  一、通过主线程的推出(ExitThread(DWORD dwExitCode))   二、退出进程(ExitProcess())  三、强行退出进程(TerminateProcess(HANDLE   hProcess,UINT uExitCode);)  通常在程序中会定义一个私有变量来,来记录进程的句柄。

      进程间的通信:每一个进程都有自己的一个4GB的虚拟地址空间,那么通信就变得困难,而windows提供了内存映射文件机制,实现了进程间的通信(实质:一个进程通过构建文件映射对象在物理存储器中获取一个(物理内存)后,其他的进程能够根据文件映射的名称将自己的虚拟内存地址映射到同一个物理内存中,这样就实现了通信)。相应的有下面一组API函数:1.CreateFileMapping函数 (用于创建内存映射文件对象)   2.MapViewOfFile 函数(用于将内存映射文件映射到进程的虚拟地址空间中) 3.OpenFileMapping函数(根据内存映射文件名称返回内存映射文件句柄)。  4.UnmapViewOfFile 函数(用于释放进程地址空间与内存映射文件的关联)。

实现了一下在MFC中,以文本框的形式,进行两个进程间数据的通信,关键在于,使用相应的API函数时,对函数对应参数的熟悉和相应函数的返回值的了解,是程序的关键。