• 初观线程(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

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

    不知各位看官如何理解? 


  • 相关阅读:
    POJ1185:炮兵阵地(状压dp)
    POJ3254:Corn Fields(状压dp第一发)
    二进制x&(x-1);
    子集和问题(应用--换零钱)POJ2229:Sumsets
    JAVA math包
    UVA+POJ中大数实现的题目,持续更新(JAVA实现)
    HDU中大数实现的题目,持续更新(JAVA实现)
    SDUT中大数实现的题目,持续更新(JAVA实现)
    JAVA与ACM
    HDU3123:GCC(同余模简单题)
  • 原文地址:https://www.cnblogs.com/jianggest/p/firstviewaboutthread.html
Copyright © 2020-2023  润新知