2014年2月20日

摘要: 一般可以有两种方式来实现线程间通信:1、使用全局变量2、使用自定义消息1、利用全局变量来实现线程通信通过一个例子来理解例子:设计一个以对话框为主界面的应用程序,当按下一个按钮时,启动一个从线程,该线程显示一个表示正在运行的对话框(在对话框的标题上显示一个随时间增加的数字),而当按下另一个按钮时从线程结束运行。实现:(1)用MFC创建一个基于对话框的应用程序,将ok按钮的标题修改为结束程序,将取消按钮的标题改为线程结束,在增加一个按钮,标题为线程开始。(2)在对话框的实现文件中定义一个全局变量BOOL bThreadExit=FALSE;(3)在对话框的实现文件中定义一个线程函数//定义一个线程 阅读全文
posted @ 2014-02-20 22:16 ljy2013 阅读(244) 评论(0) 推荐(0)
 
摘要: 在多线程的情况下,如果存在多个线程要使用同一个资源的情况时,这需要在线程之间进行协调(同步)才能是程序完成预定的工作,而不会出现灾难性的冲突。为了解决多线程之间的同步问题,MFC把对线程之间进行同步的一些基本操作封装在类CSyncObject中,为了适应在各种不同的情况下同步的需要,MFC又以类CSyncObject为基类派生了四种同步类,即事件,临界段,互斥体,和信号计数器,分别为:CEvents,CCriticalSections,CMutexes,CSemphores。这些类的声明都在头文件"afxmt.h"中。1、事件同步类:CEvent( BOOL bInitia 阅读全文
posted @ 2014-02-20 21:48 ljy2013 阅读(272) 评论(0) 推荐(0)
 
摘要: 1、进程和线程的基本概念:在计算机系统中,一个正在运行的应用程序就叫做一个进程,一个进程可以有多个线程,进程的任务是有这个进程的所有线程共同配合来完成的。一个进程至少有一个线程,叫做主线程。2、工作线程的创建:如何创建一个工作线程是一个比较容易的,只要清楚开启线程函数的原型就很简单了。开启线程的函数是AfxBeginThread,它主要有两种类型,分别是:CWinThread* AfxBeginThread( AFX_THREADPROC pfnThreadProc, LPVOID pParam, int nPriority = THREAD_PRIORITY_NORMAL, UINT nSt 阅读全文
posted @ 2014-02-20 20:45 ljy2013 阅读(350) 评论(0) 推荐(0)