
多线程同步和通讯
文章平均质量分 74
jackychu
这个作者很懒,什么都没留下…
展开
-
关于WaitForSingleObject的使用
DWORD WaitForSingleObject( HANDLE hHandle, DWORD dwMilliseconds ); 参数hHandle是一个事件的句柄,第二个参数dwMilliseconds是时间间隔。如果时间超过dwMilliseconds值但时间事件是有信号状态返回WAIT_OBJECT_0,如果时间超过dwMilliseconds原创 2008-09-24 17:13:00 · 904 阅读 · 0 评论 -
CreateEvent的使用
CreateEvent的使用 事件对象就像一个开关:它只有两种状态---开和关。当一个事件处于”开”状态,称其为”有信号”,否则称为”无信号”。您可以在一个线程的执行函数中创建一个事件对象,然后观察它的状态,如果是”无信号”就让该线程睡眠,这样该线程占用的CPU时间就比较少。 产生事件对象的函数如下:HANDLE CreateEvent( LPSECURITY_ATTRI原创 2008-09-24 17:52:00 · 1154 阅读 · 0 评论 -
主线程与子线程之间通讯, 子线程与子线程之间的通讯
线程之间的通讯可以有两种方法.一.利用全局变量. 大家都可以访问,所以使用很方便. 二.利用PostThreadMesagge(ThreadId,Msg,0,0)来进行通讯.其中要注意的问题是,因为利用CreateThread创建的线程是无消息获取通道,消息映射这些功能,只有有窗体的线程才具备这些功能,所以要自己获取消息队列,利用PeekMessage既可. 以下是我做的原创 2008-09-28 10:21:00 · 2704 阅读 · 0 评论 -
VC++进程间通信的十一种方法
VC++中进程间相互通信的十一种方法 进程通常被定义为一个正在运行的程序的实例,它由两个部分组成: 一个是操作系统用来管理进程的内核对象。内核对象也是系统用来存放关于进程的统计信息的地方 另一个是地址空间,它包含所有的可执行模块或DLL模块的代码和数据。它还包含动态分配的空间。如线程堆栈和堆分配空间。每个进程被赋予它自己的虚拟地址空间,当进程中的一个线程正在运行时,该线程可以访问只属于它的原创 2008-09-26 14:42:00 · 1916 阅读 · 0 评论 -
如何建立多线程之间的消息通信
开发服务器程序经常要涉及到多线程之间进行消息通信,比如子线程要通知父线程要退出,或一些其他的信息. 因为服务器的多线城都是工作线程,是没有CWnd,所以如果要接收消息,必须自己建立消息队列来获取消息,同时要建立消息映射.具体如下:在.h文件中加入DECLARE_MESSAGE_MAP()在.cpp文件中加入BEGIN_MESSAGE_MAP(CServiceSrvApp原创 2008-09-26 15:13:00 · 5687 阅读 · 0 评论 -
CSemaphore/CMutex/CCriticalSection/CEvent区别
CSemaphore/CMutex/CCriticalSection/CEvent区别如果某个线程必须等待某些事件发生后才能存取相应的资源,用CEvent;如果一个应用同时可以有多个线程存取相应资源,用CSemaphore;如果有多个应用(多个进程)同时存取相应资源,用CMutex,否则用CCriticalSection。 CCriticalSection不是核心对象,其余几个都是 互原创 2009-08-24 17:04:00 · 1907 阅读 · 0 评论