MFC星火01_多线程初探
来源:互联网 发布:ubuntu 中文环境 编辑:程序博客网 时间:2024/04/30 04:57
MFC多线程有两类,工作者线程和用户界面线程
两者主要的区别是工作者线程没有消息循环,用户界面线程有自己的消息队列和消息循环.
工作者线程没有消息机制,通常用来执行后台计算和维护任务,如冗长的计算过程,打印机的后台打印等,要用到6个参数.用户界面线程一般用于处理独立于其他线程执行之外的用户输入,响应用户及系统所产生的事件和消息等,要用到5个参数.
但对于Win32的API编程而言,这两种线程是没有区别的,它们都只需线程的启动地址即可启动线程来执行任务。
两种重载函数原型和参数分别说明如下:
(1) CWinThread* AfxBeginThread(
AFX_THREADPROC pfnThreadProc,
LPVOID pParam,
nPriority=THREAD_PRIORITY_NORMAL,
UINT nStackSize=0,
DWORD dwCreateFlags=0,
LPSECURITY_ATTRIBUTES lpSecurityAttrs=NULL);
UINT ExecutingFunction(LPVOID pParam);
请注意,ExecutingFunction()应返回一个UINT类型的值,用以指明该函数结束的原因。一般情况下,返回0表明执行成功。
pParam:传递给线程函数的一个32位参数,执行函数将用某种方式解释该值。它可
以是数值,或是指向一个结构的指针,甚至可以被忽略;
nPriority:线程的优先级。如果为0,则线程与其父线程具有相同的优先级;
nStackSize:线程为自己分配堆栈的大小,其单位为字节。如果nStackSize被设为0,
则线程的堆栈被设置成与父线程堆栈相同大小;
dwCreateFlags:如果为0,则线程在创建后立刻开始执行。如果为CREATE_SUSPEND,
则线程在创建后立刻被挂起;
lpSecurityAttrs:线程的安全属性指针,一般为NULL;
注意
pfnThreadProc如果是类的成员函数需要定义为静态成员类型的,然后还需要注意静态成员函数不能直接调非静态成员函数,需要调指针作为中介。
(2) CWinThread* AfxBeginThread(
CRuntimeClass* pThreadClass,
int nPriority=THREAD_PRIORITY_NORMAL,
UINT nStackSize=0,
DWORD dwCreateFlags=0,
LPSECURITY_ATTRIBUTES lpSecurityAttrs=NULL);
pThreadClass 是指向 CWinThread的一个导出类的运行时类对象的指针,该导出类定义了被创建的用户界面线程的启动、退出等;
其它参数的意义同形式(1)。
- MFC星火01_多线程初探
- MFC星火02_消息映射机制
- C++星火01_编译指令
- MFC星火03_DECLARE_DYNAMIC
- MFC 以及多线程初探
- 设计模式星火01_单例模式
- C++星火04_关联容器map
- C++星火02_一些好的编程规范
- MFC初探
- 初探MFC
- 多线程初探
- 【多线程】初探多线程
- 黑马程序员01_多线程
- ZoneMinder安装_初探
- 多线程MFC
- MFC 多线程
- MFC多线程
- MFC多线程
- “口令”和“密码”还是有区别滴!!!
- C++星火04_关联容器map
- android---sqlite基本操作
- python logging模块如何把不同内容定向到不同的输出
- struts2 的传值到后台
- MFC星火01_多线程初探
- 文件系统注册及mount过程分析
- Apache下设置虚拟主机之基于IP的虚拟主机
- 《深入理解Linux内核》读书笔记-第二章-内存寻址(1)
- VirtualBox中如何全屏显示
- 错误和异常
- jquery ajax post 回调函数不执行的原因分析和解决办法
- SDK ListView改变某一行某一列的文字颜色/背景颜色
- flex与java--Blazeds学习(配置)