1.在本程序的运行中,可以看到主线程和子线程是轮流执行的,可能是因为创建的时候优先级系统
,CPU轮流给时间片的关系吧。
2。
3.解决主子线程的优先的关系,目前了解的方法是让主线程sleep一段时间,等待子线程完成工作
。
4。通过观看别的例子在进行实际的应用中,也是主线程只进行一些基本的开始和结束的操作,具
体的操作都是由子线程来完成。
5.对于子线程的使用,在创建子线程后,都会马上用CloseHandle()进行对子线程的关闭,其实这
只是将线程的Usage Count的计数减1,而当线程在创建时,Usage Count的值是2,只有在Usage
Count为0的时候,线程才能停止运行。
6.对于“暂停计数器”的理解:暂停计数器Suspend Count在创建时为1,也就是说在创建初是先暂
停的,这个暂停时间是用来进行线程的初始化。【这个也就可以解释,为什么我用书本的例子看到
总是先运行主线程一段时间再运行子线程(子线程设置的是创建后立即运行)。】在子线程的初始
化(初始化是由谁来进行的呢?)完成后,如果在创建线程时设定是创建后立即运行也就是参数为
0那么此时线程的暂停计数将被递减为0. 同理如果在创建线程的时候,参数设置为
CREATE_SUSPENED ,那此时的线程就会一直处于暂停状态,知道在其他的活动线程中用
ResumeThread(线程句柄)来激活。
7.提到ResumeThread()就必须了解其实执行一次ResumeThread就是将该线程的SuspendCount减1,
这是个累加量,当然对应的操作就是调用SuspendThread(线程句柄)来使SuspendCount加1.最后再
次重申,只有在SuspendCount为0时,线程才能运行。
程序的代码如下:
Code
程序运行中遇到的一个疑问已经自己的猜测:
不知各位看官如何理解?