VC 线程间通信的三种方式
摘要:1.使用全局变量(窗体不适用) 实现线程间通信的方法有很多,常用的主要是通过全局变量、自定义消息和事件对象等来实现的。其中又以对全局变量的使用最为简洁。该方法将全局变量作为线程监视的对象,并通过在主线程对此变量值的改变而实现对子线程的控制。 由于这里的全局变量需要在使用它的线程之外对其值进行改变,这就需要通过volatile关键字对此变量进行说明。使用全局变量进行线程通信的方法非常简单,通过下面给出的示例代码能够对其有一个基本的认识。 // 线程通信用全局变量 volatile bool g_bDo = false; …… //线程处理函数 UINT ThreadProc5(LPVOID pP
阅读全文
posted @
2014-04-06 19:30
bitbit
阅读(2220)
推荐(0) 编辑
转:VC++线程同步-事件对象
摘要:这是整理孙鑫VC得到的关于线程同步方面的笔记.n 事件对象也属于内核对象,包含一个使用计数,一个用于指明该事件是一个自动重置的事件还是一个人工重置的事件的布尔值,另一个用于指明该事件处于已通知状态还是未通知状态的布尔值。n 有两种不同类型的事件对象。一种是人工重置的事件,另一种是自动重置的事件。当人工重置的事件得到通知时,等待该事件的所有线程均变为可调度线程。当一个自动重置的事件得到通知时,等待该事件的线程中只有一个线程变为可调度线程。得到事件对象后,因为是自动重置的事件对象,所以操作系统将该事件对象设置为非信号状态//-------------------------------------
阅读全文
posted @
2014-04-06 10:26
bitbit
阅读(435)
推荐(0) 编辑
VC线程同步方法
摘要:VC MFC中线程同步对象的区别临界区 CCriticalSection,在用户模式工作,适用于保护线程间共享资源,一个线程可以多次Lock不会出错。不支持在多进程之间工作。互斥量 CMutex,在内核模式工作,除了支持临界区的功能,还可以为互斥量命名,以便在多进程中工作。互斥量比临界区耗资源。 事件 CEvent,在内核模式工作,适用于一个线程等待另一个线程完成某任务。信号量 CSemaphore,在内核模式工作,适用于允许特定个数的线程执行某任务。 实例:CwinThread *pThread;1、使用互斥对象 HANDLE hMutex; hMutex = .
阅读全文
posted @
2014-04-06 10:19
bitbit
阅读(939)
推荐(0) 编辑
C/C++四种退出线程的方法
摘要:退出线程可以有四种方法:1.线程函数的return返回(最好这样): 其中用线程函数的return返回, 而终止线程是最安全的, 在线程函数return返回后, 会清理函数内申请的类对象, 即调用这些对象的析构函数. 然后会自动调用 _endthreadex()函数来清理 _beginthreadex(...)函数申请的资源(主要是创建的tiddata对象).2.调用 _endthreadex()函数 或 ExitThread()函数(最好不要): 如果使用这两种方法退出线程, 则不会执行线程函数的return语句, 所以就不会调用线程函数作用域内申请的类对象的析构函数, 会造成内存泄露...
阅读全文
posted @
2014-04-06 10:14
bitbit
阅读(17744)
推荐(0) 编辑
CreateThread、_beginthreadex和AfxBeginThread .
摘要:创建线程好几个函数可以使用,可是它们有什么区别,适用于什么情况呢?参考了一些资料,写得都挺好的,这里做一些摘抄和整合。【参考1】CreateThread, AfxBeginThread,_beginthread, _beginthreadex的区别=====================================================================1、CreateThread——Windows的API函数2、_beginthreadex——MS对C Runtime库的扩展SDK函数3、AfxBeginThread——MFC中线程创建的MFC函数CreateT
阅读全文
posted @
2014-04-06 10:09
bitbit
阅读(434)
推荐(0) 编辑
AfxBeginThread
摘要:AfxBeginThread用户界面线程和工作者线程都是由AfxBeginThread创建的。现在,考察该函数:MFC提供了两个重载版的AfxBeginThread,一个用于用户界面线程,另一个用于工作者线程,分别有如下的原型和过程:用户界面线程的AfxBeginThread用户界面线程的AfxBeginThread的原型如下:CWinThread* AFXAPI AfxBeginThread( CRuntimeClass* pThreadClass, int nPriority, UINT nStackSize, DWORD dwCreateFlags, LPSECURITY_AT...
阅读全文
posted @
2014-02-26 16:19
bitbit
阅读(512)
推荐(0) 编辑