
Windows
文章平均质量分 74
xust999
随便活着
展开
-
CreateThread, AfxBeginThread,_beginthread
CreateThread是Windows的API函数(SDK函数的标准形式,直截了当的创建方式,任何场合都可以使用),提供操作系统级别的创建线程的操作,且仅限于工作者线程。不调用MFC和RTL的函数时,可以用CreateThread,其它情况不要轻易。在使用的过程中要考虑到进程的同步与互斥的关系(防止死锁)。线程函数定义为:DWORD WINAPI _yourThreadFun(LPVOID pParameter)。但它没有考虑:(1)C Runtime中需要对多线程进行纪录和初始化,以保证C函数库工作正常转载 2011-02-10 09:49:00 · 2094 阅读 · 0 评论 -
进程间通信 1 -- 使用RegisterWindowMessage实现消息通信
<br />进程间通信的方法有很多,比如使用注册消息,内存映射,WM_COPYDATA等,下面先讲使用注册消息实现的方法。<br /> <br />使用注册消息比较简单,核心是消息的接收端和消息的发送端(接收端和发送端在两个不同的进程)必须注册相同的消息,这样发送消息才能识别。<br /> <br />下面看看具体实现:<br /> <br /><br />一,发送消息进程<br /> <br />1, 在发送消息程序A注册消息:<br /> <br />const UINT WM_UPDATE_ALARM原创 2011-03-22 11:07:00 · 9429 阅读 · 7 评论 -
程序的生和死
今天给新来的同事讲MFC的消息循环,诸如什么时候启动的,如何循环的,消息是如何传递的等等,结果收效甚微,原因是他们连基本的程序产生到程序运行结束的基本过程都不清楚,所以我决定先梳理一个程序从生到死经历的过程,再讲消息传递。调用CreateProcess创建一个进程内核对象 ↓系统为进程创建一个私有地址空间(虚拟地址空间) ↓在进程地址空间保留区域将exe文件和需要的DLL映射到进程的地址空间原创 2011-04-06 20:22:00 · 914 阅读 · 0 评论 -
工作线程与消息循环
工作线程与消息循环 首先声明, 这里的工作线程与UI线程是相对的,即没有任何窗口的. 如果需要与主线程或其它辅助线程通讯,有几种方法如事件,消息,信号等,也可以是以上几种方法的综合运用.下面就列出以下3种通讯方法的代码框架(1)只用消息通讯1 DWORD ThreadProc(LPVOID lParam)2 {3 //创建线程消息队列4 MSG msg;5 PeekMessage(&msg, NULL, WM_USER, WM_USER, PM_NOREMOVE);6 //通知其它线程消息队列已创建好7 S原创 2011-04-25 15:34:00 · 1676 阅读 · 1 评论 -
进程间通信 2 -- 使用WM_COPYDATA消息进行通信
<br /> <br />在“进程间通信 1 -- 使用RegisterWindowMessage实现消息通信” 中已经讲过了通过RegisterWindowMessage注册全局消息来实现进程间的通信,今天讲通过WM_COPYDATA消息进行进程间通信。注:这个适用于少量数据通信的情况。<br /> <br />在Win32中,WM_COPYDATA消息主要目的是允许在进程间传递只读数据。SDK文档推荐用户使用SendMessage()函数,接收方在数据复制完成前不返回,这样发送方就不可能删除和修改数据。原创 2011-04-25 20:40:00 · 1071 阅读 · 0 评论 -
内存映射文件之剖析
作者:xrbeck 内存映射文件(Mapping File)是Windows内存管理中的重要一环,也是编程技术中比较高级的一个话题。目前关于这方面的资料比较少,而其实内存映射文件其实对我们的对于Windows的内存了解很重要原创 2011-06-30 08:48:00 · 690 阅读 · 0 评论 -
进程间通信 3 -- 使用管道进行通信
管道是一段被进程用来通讯的共享内存。管道(Pipe)是一种具有两个端点的通信通道:有一端句柄的进程可以和有另一端句柄的进程通信。管道可以是单向-一端是只读的,另一端点是只写的;也可以是双向的一管道的两端点既可读也可写。 下面介绍怎样创建,管理和使用管道。关于管道有命名和匿名两种管道,相比之下匿名管道所需开销较小。这里用管道这个名词表明它是一个信息通道,概念上来说,一个管道连接两端。单向管道允许一端转载 2011-06-30 14:14:00 · 1308 阅读 · 0 评论