mfc 线程的诞生和死亡
知识点:
线程概念
线程的诞生
线程的死亡 一、 线程: 线程,是程序执行流的最小单元。
另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。线程也有就绪、阻塞和运行三种基本状态。每一个程序都至少有一个线程,那就是程序本身。
线程是程序中一个单一的顺序控制流程。在单个程序中同时运行多个线程完成不同的工作,称为多线程。
二、线程的诞生
产生一个新的线程 调用 CreateThread实现,这时系统会为我们完成下列事情:
、创建“线程对象”,将其Handle作为CreateThread返回值。
、为“线程对象”,设定计数值为1
、配置线程上下文环境(context)
、分配线程堆栈
、初始化SS堆栈指针和IP指令指针
、转到线程代码开始处。 三、进程的死亡
、执行完代码后正常退出,或者遇到return时结束。ExitThread
、调用TerminateTheard强制结束。 四、相关代码测试
、与线程相关的API函数
CreateThread
GetExitCodeThread
ExitThread
GetThreadPriority
SetThreadPriority
CloseHandle
CreateRemoteThread
ResumeThread
GetThreadContext
SetThreadContext
ThreadProc //回调函数
C run-time libraries里
beginthread
endthread
、代码测试 DWORD WINAPI ThreadProc1(
LPVOID lpParameter // thread data
)
{static int i=;
while()
{
Sleep();
TRACE("thread i=%d \n",i++);
} return ;
} HANDLE th;
void CDialog_PROCESS::OnBnClickedButton4()
{
// TODO: 在此添加控件通知处理程序代码
DWORD tid;
//创建新线程
th=CreateThread(NULL,,ThreadProc1,,CREATE_SUSPENDED,&tid);
} void CDialog_PROCESS::OnBnClickedButton5()
{
// TODO: 在此添加控件通知处理程序代码
ResumeThread(th); //恢复线程
} void CDialog_PROCESS::OnBnClickedButton6()
{
// TODO: 在此添加控件通知处理程序代码
SuspendThread(th);//挂起线程
} void CDialog_PROCESS::OnBnClickedButton7()
{
// TODO: 在此添加控件通知处理程序代码
TerminateThread(th,);
}
mfc 线程的诞生和死亡的更多相关文章
- mfc 进程的诞生和死亡
进程概念 进程的诞生 进程的死亡 一. 进程: .简单的说 双击一个EXE图标时,系统就会产生一个相应的进程,分配相应的资源,并执行相应的代码. .标准一些的说法: 进程是一个具有独立功能 ...
- MFC 线程创建方式
MFC 分UI线程和工作线程,一般现在的应用程序都是一个主UI线程和N个工作线程来完成工作.主UI线程获取到工作线程发送的信息来刷新界面. 不过因为工作需要,MFC有要维护的项目,因此就学习一下MFC ...
- MFC 线程中CWnd对象
尽量不要在MFC线程中将CWnd作为参数传递,会引起crash 正确的做法: 1. 将CWnd对应的handle传进来,通过CWnd::FromHandle()函数转换: 2. 在线程中用SendMe ...
- JAVA - 线程从创建到死亡的几种状态都有哪些?
JAVA - 线程从创建到死亡的几种状态都有哪些? 新建( new ):新创建了一个线程对象. 可运行( runnable ):线程对象创建后,其他线程(比如 main 线程)调用了该对象 的 sta ...
- 安全终止MFC线程
终止线程 有两种情况可以使线程结束:控制函数结束或者根本就不允许线程完成,而提前终止它.我们可以想象在WORD中进行后台打印,如果打印结束了,那线程就可以结束了.如果用户中止了打印,那后台打印线程也要 ...
- MFC线程钩子和全局钩子[HOOK DLL]
第一部分:API函数简介 1. SetWindowsHookEx函数 函数原型 HHOOK SetWindowsHookEx( int idHook, // hook typ ...
- MFC线程(三):线程同步事件(event)与互斥(mutex)
前面讲了临界区可以用来达到线程同步.而事件(event)与互斥(mutex)也同样可以做到. Win32 API中的线程事件 HANDLE hEvent = NULL; void MainTestFu ...
- 多开 MFC线程
序言:我才编程几年啊!就要处理多线程.对于只写函数的我,这难度简直了!不过MFC的多线程,貌似比较简单,还能处理的了. (1).开MFC多个线程 在视频采集的过程中,如果不使用媒体计数器,会造成主线程 ...
- Boost多线程-替换MFC线程
Mfc的多线程看起来简单,可以把线程直接压入向量,由系统类似进行调配,其实在内存的处理问题上留下了漏洞.在新线程里面载入大量流,会导致内存泄露. 方便之处:直接使用结构体传入函数参数,供 ...
随机推荐
- maven一模块字段调用另一个模块数据生成下拉框
店铺运营数据录入表实现的下拉框实现 从片区管理中提取分区数据,在招商管理(MIS)模块中获取并以下拉框的形式展现 ctrl类: 1.首先在ctrl类注入需提取另一模块字段的serviceclient接 ...
- oracle数据库occi接口写入中文乱码解决方法
将初始化代码中 Environment::createEnvironment(Environment::DEFAULT); 改为 Environment::createEnvironment(“UTF ...
- eclipse中整合ejb和web工程
用 Eclipse JEE 版本的话,新建一个 Enterprise Application Project 工程(New --> Java EE --> Enterprise Appli ...
- UIButton vs UIEventListener 事件处理
NGUI的事件 在使用NGUI的事件处理时,发现UIButton和UIEventListener之间的共同点越来越多. 当然处理事件,也有一些其它的函数,比如:UIEventTrigger,Butto ...
- C Programming vs. Java Programming
Thing C Java type of language function oriented object oriented basic programming unit function clas ...
- zabbix待完整
fad 下载zabbix3.4的配置文件 wget -O zabbix-3.4.2.tar.gz http://sourceforge.net/projects/zabbix/files/ZABBIX ...
- HashSet集合的add()方法的源码
interface Collection { ... } interface Set extends Collection { ... } class HashSet implements Set { ...
- Docker容器学习与分享10
Docker容器向外提供服务 用分享04中的Nginx服务来试一下. 不过这次我直接用Nginx镜像创建容器,先下载Nginx镜像. [root@promote ~]# docker search n ...
- 1001.A+B Format(10)
1001.A+B Format(20) github链接:[example link](https://github.com/wgc12/object-oriented 1.对题目的理解: 首先这道题 ...
- Nodejs学习资源汇总
Node.js v6.3.1 Documentation https://nodejs.org/dist/latest-v6.x/docs/api/ npm官网 https://www.npmjs ...