zoukankan      html  css  js  c++  java
  • 《Win32多线程程序设计》学习笔记 第5章 不要让线程成为脱缰野马

    利用terminatethread结束一个线程

    不建议使用这个函数

    Terminates a thread.

    BOOL WINAPI TerminateThread(
      HANDLE hThread,   
    //欲结束线程的handle
      DWORD dwExitCode  //垓线程的结束代码
    );

    返回值: 成功返回TRUE

    该函数是一个危险的函数,不到万不得以不使用它。TerminateThread强迫线程结束,手段激烈,线程没有机会在结束前清理自己。目标线程的堆栈也没有释放,有可能引起内存泄露。任何与此线程有关的DLLs也么有机会获得“线程解除附着”的通知。如果此线程正进入一个critical section中,那么这个critical section 将永远处于锁定状态。

     设立一个标记(event)来结束

     在代码中设置一个标记,利用其职要求线程结束自己。

    if(WaitForSingleObject(hExitEvent,0)!=WAIT_TIMEOUT){
      printf(
    "received request to terminate");
    }

    使用SuspendThread挂起一个线程

     允许有人调用它来挂起一个指定的线程,知道有人调用ResumeThread才能恢复醒来。

    Suspends the specified thread. 

    DWORD WINAPI SuspendThread(
      HANDLE hThread     
    //欲被挂起的线程
    );
    返回值:如果成功,返回线程目前的挂起次数。失败,返回0xffffffff。

    该函数有可能会因使用不慎引起死锁。

    唤醒一个挂起的线程ResumeThread

    Decrements a thread's suspend count. When the suspend count is decremented to zero, the execution of the thread is resumed.

    DWORD WINAPI ResumeThread(
      __in          HANDLE hThread
    );

  • 相关阅读:
    域名ICP备案个人备案写网站名称注意事项
    关于域名备案的注意事项
    MySQL里默认的几个库是干啥的?
    Python 1.3 元组与文件
    PTA(BasicLevel)-1006换个格式输出整数
    数据结构与算法-图的最短路径Dijkstra
    PTA(Basic Level)-1002 写出这个数
    PTA(Basic Level)-1076 Wifi密码
    C程序设计语言笔记-第一章
    谁能笑到最后,约瑟夫环-Josephus问题求解
  • 原文地址:https://www.cnblogs.com/kwliu/p/2195913.html
Copyright © 2011-2022 走看看