回 帖 发 新 帖 刷新版面

主题:[原创]MFC线程处理概述(转自《21天学通Visual C++》)

事实上,Win32 API提供了_beginthreadex函数,可以让用户在底层启动线程。总地来说,Win32 API提供的线程处理的接口,引用较为复杂。因此,在Win32 API的基础上,MFC提供了处理线程的类和函数。其中,MFC提供处理线程的类为CWinThread类。CWinThread类使用线程本地存储来管理在MFC环境中的线程的上下文信息。
一般地说,用户可以直接声明CWinThread对象,但在许多情况下,可以让MFC的全局函数AfxBeginThread来创建CWinThread对象。CWinThread类提供了几个函数来对线程进行操作。例如下面的几个函数。
    CWinThread:: AfxBeginThread函数:用来创建进程。
    CWinThread::CreateThread函数:用来启动新的线程。
    CWinThread::SuspendThread函数:用来挂起线程。
    CWinThread::ResumeThread函数:用来恢复线程的执行。
此外,读者还需知道,MFC中支持两种类型的线程:工作者线程和用户界面线程。下面将为读者详细介绍这两种线程的创建和使用。其区别在于:工作者线程常用于完成不要求用户输入的任务,如耗时计算、后台打印之类的任务。因此,其不需要有界面。工作者线程也适用于等待一个事件的发生。例如,从一个应用程序中接收数据,而不必要求用户等待。
17.2.2  创建工作者线程
工作者线程可以说是并行执行的一个函数,其一般用来完成那些不需要用户输入的后台任务。例如数据库备份功能和网络连接状态监视等功能。
比如,一个收费站的进口只有一个收费窗口在工作。该收费窗口正在处理正常的车辆收费工作,此时来了一个车队。该车队有许多车,需要花费很长时间来完成其收费工作。为了不使其他车辆阻塞,需要另外新开一个收费窗口,专门用于解决该车队的收费。如果把正常收费的窗口看做主线程,这个新开的窗口就是工作者线程……

回复列表 (共3个回复)

沙发

。。。

板凳

多线程远比这些复杂得多啊......

3 楼

不知所云。。。。原创?!转载?!

我来回复

您尚未登录,请登录后再回复。点此登录或注册