初观线程(1)

线程一些基本知识

 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

程序运行中遇到的一个疑问已经自己的猜测:

不知各位看官如何理解? 


原文地址:https://www.cnblogs.com/jianggest/p/firstviewaboutthread.html