一. 使用线程步骤:
1. 定义线程函数传递参数结构
如:
typedef struct tagTHREADPARMS
{
//CString content;
HWND hwnd;
int window;
int state;
Monitor *mm;
int thread_id;
}THREADPARMS;
2. 定义线程函数:
如:
UINT read(LPVOID pParam)
{
//一个函数而已
THREADPARMS *p=(THREADPARMS*)pParam;
HWND hwnd=p->hwnd;
int edit=p->window;
Monitor *mon=p->mm;
mon->add_reader(p);
SetDlgItemText(hwnd,p->state,"正在读取");
Sleep(2000);
char * str=new char[1000];
GetDlgItemText(hwnd,IDC_DISPLAY,str,1000);
SetDlgItemText(hwnd,edit,str);
mon->complete_reader(p);
SetDlgItemText(hwnd,p->state,"读取完成");
delete p;
return 0;
}
3. 启动线程
如:
THREADPARMS *ptp=new THREADPARMS;//初始化线程参数结构
ptp->hwnd=m_hWnd;//对PTP结构赋值
ptp->mm=mm;
ptp->window=window;
ptp->thread_id=thead_id;
ptp->state=state;
AfxBeginThread(read,ptp);//启动线程
二. 线程的挂起和重启
1. 挂起线程
SuspendThread(HANDLE);
注意:线程暂停后便停止运行,也就是说线程可以自己挂起自己,但无法自己唤醒自己。
2.唤醒线程
ResumeThread(HANDLE);
对于CWinThread 类,只要使用m_hThread成员,即为HANDLE变量。
超级注意:GetCurrentThread()得到的是一个当前的线程的handle,其实是一个伪HANDLE,是当前所有运行的线程环境的HANDLE。无法直接使用此函数得到的handle唤醒线程。但是使用一些其他函数后可以,我没有尝试。
还有,MFC中的线程是不安全的。不安全的含义是:当两个线程同时访问同一个临界资源时,系统会允许。这就会产生一些不可预知的错误。
解决的方法时使用进程的同步类或者自己编写代码实现线程互斥访问和同步。
更多内容欢迎访问围观IT
分享到:
相关推荐
MFC中多线程的应用[定义].pdf
MFC多线程例子,允许单开单停。MFC多线程例子,允许单开单停。
MFC 多线程应用, 包括工作线程, 用户界面线程, 例子多达9个,欢迎下载测试
MFC_多线程技术在串口通信中的应用
线程是程序独立运行的基本单位,一个程序通过执行多个线程可以提高机器本身资源的利用率,同时也可以完成多任务并行运行的操作,多线程可以实现并行处理,避免了某项任务长时间占用CPU时间。 互斥体 互斥体与临界区...
mfc , 多线程,还有应用代码,这些都是有用的东西,在工作中
本论文以陕西省自然科学基金项目(2001年度)—软件逆向工程技术研究为背景,提出了一种软件再设计(redesign)方法,它以面向对象的分析和设计为指导,详述了Windows编程的一个应用领域:多线程通信技术。基于微软基础...
MFC 多线程总结, 开发为于windows的应用程序开发
此实例通过使用MFC的线程函数来创建线程,并应用了临界区同步对象。为《MFC程序设计》的例子。例子很实用,好例子喽!
主要介绍mfc下多线是如何使用的。里面有个简单的demo可以参考。该ppt不是本人所做。只是拿来作为以后的参考。
应用mfc进行windows多线程编程
本文中讲解了mfc的多线程编程,内容详细,还有相应的应用实例,可以助你更快的了解多线程编程。
MFC多线程编程多线程概述 进程和线程都是操作系统的概念。进程是应用程序的执行实例,每个进程是由私有的虚拟地址空间、代码、数据和其它各种系统资源组成,进程在运行过程中创建的资源随着进程的终止而被销毁,所...
主对话框单击事件里使用多线程创建对话框B,正常情况见B对话框都是闪现一次,无法长期停留。本代码利用MSG防止了此现象的发生,适合初学多线程的新手。
这是一个支持多线程打印调试日志的控件,可以应用到很多场合,用了内存池,锁,因为自己经常需要用到,所以就写了这么个控件
使用线程池实现的完整的 Client/Server Socket通讯类,很容易使用,也很容易被集成到C++应用程序中。也适用于Linux/Unix。 Best C++/MFC article of February 2009
多线程编程之二——MFC中的多线开发
用MFC实现串口编程, 本文详细介绍了串行通信的基本原理,以及在Windows NT、Win98环境下用MFC ...并给出用Visual C++6.0 编写的相应MFC32位应用程序。...API、MFC32位应用程序、事件驱动、非阻塞通信、多线程.
MFCACE多线程demo,基于ace 但是自己需要配置 C/C++属性里配置即可