windows核心编程-线程挂起和Context

一、线程挂起(暂停)

1、SuspendThread用来暂停一个线程的执行,线程暂停时,不会被调度执行

2、ResumeThread用来恢复一个暂停线程的执行(一个暂停的线程无法调用这个方法来恢复自己,

3、因为暂停的线程不可能被执行)暂停县城总是立即被暂停,而不管被暂停的线程执行到了哪个指令

线程内核对象内部,存储了一个暂停计数的值,每调用一次,SuspendThread方法该值就加1,

调用ResumeThread一次该值就减1当该值为0时,就表示该线程可以被调用执行了,但不会被立即执行,

所以多次被Suspend的线程不能期望调用一次Resume方法就恢复

4、这两个方法入口参数为线程的句柄

5、线程函数内部可以通过Sleep或者SleepEx方法自行暂停一定时间后自动恢复执行,但是这个暂停时间

对于系统调度程序来说只是一个参考值,调度程序不能保证精确的暂停指定的时长,通常暂停时长会长于

指定的暂停时长

二、线程的暂停式创建(下面例子1)

1、在调用CreateThread创建线程时,可以明确指定以暂停方式创建线程(CREATE_SUSPENDED)

2、如果没有暂停方式执行的话,创建线程的行为将比较难以控制,有可能调度程序在CreateThread返回

前就开始执行新线程,也有可能在返回之后才去调度执行新线程,很难预期

3、所以,推荐创建线程都以暂停标志创建知道CreateThread返回,并做了一些必要的处理后&#


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部