zoukankan      html  css  js  c++  java
  • 执行挂起状态线程的终止与暂停

    最近研究执行挂起状态,稍微总结一下,以后继续补充:

        SuspendThread、ResumeThread、ExitThread和TerminateThread函数均能够实现停止一个线程的进行,但它们的含意又是不同的。

        1)SuspendThread和ResumeThread。SuspendThread函数用于挂起指定的线程,当线程被挂起,也就停止了运行。他只有个一参数hThread,表现被挂起的线程的句柄(每一个线程都有一个挂起状态计数值,当其值大于0时,表现线程被挂起;当其值大于0时,线程就处于正常运行状态)

        每次调用SuspendThread函数,由hThread标识的线程的挂起状态计数值加1,。如果函数成行胜利,函数将返回hThread句柄标识的线程的挂起状态计数值。

        2)与函数SuspendThread对应的ResumeThread函数将hThread句柄标识的线程的挂起状态计数值减1。如果成行胜利,函数将返回hThread句柄标识的线程的挂起状态计数值。

        每日一道理
    一个安静的夜晚,我独自一人,有些空虚,有些凄凉。坐在星空下,抬头仰望美丽天空,感觉真实却由虚幻,闪闪烁烁,似乎看来还有些跳动。美的一切总在瞬间,如同“海市蜃楼”般,也只是刹那间的一闪而过,当天空变得明亮,而这星星也早已一同退去……

        3)ExitThread函数用于线程终止自身的执行,只要在线程的执行函数中被调用。原型:Void Exitthread(DWORD dwExitCode)。函数运行后,将线程的退出码设置为deExitCode后,中止线程的执行。其中,dwExitCode可认为用户设置的任意值,执行函数后,线程的退出吗由“STILL_ACTIVE”变为dwExitCode。通过函数GetExitCodeThread可以获得线程的退出吗(调用ExitThread函数后,并不能确定从系统中清除指定的线程对象,只有在该线程对象的最后一个句柄被关闭后,线程对象才被彻底清除)。

        4)TerminateThread函数可以强行终止某一个线程,原型:Bool TerminateThread(HANDLE hThread,DWORD dwExitCode),当函数执行胜利后,返回非0的值,否则返回0(虽然可以当即中止线程的执行,但不释放所占用的资源,例如,为县城初始分配的堆栈等。因此,使用该函数来终止某个线程的执行是不安全的,可能引发系统的不稳定)。

    文章结束给大家分享下程序员的一些笑话语录: 腾讯总舵主马化腾,有人曾经戏称如果在Z国选举总统,马化腾一定当选,因为只要QQ来一个弹窗”投马总,送Q币”即可。

  • 相关阅读:
    108. Convert Sorted Array to Binary Search Tree
    107. Binary Tree Level Order Traversal II
    106. Construct Binary Tree from Inorder and Postorder Traversal
    105. Construct Binary Tree from Preorder and Inorder Traversal
    104. Maximum Depth of Binary Tree
    103. Binary Tree Zigzag Level Order Traversal
    102. Binary Tree Level Order Traversal
    系统和进程相关信息
    文件I/0缓冲
    系统编程概念(文件系统mount等函数的使用)
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3086112.html
Copyright © 2011-2022 走看看