• vc创建一个线程的方法:


    vc创建一个线程的方法:
    创建线程使用CreateThread
    The CreateThread function creates a thread to execute within the address space of the calling process. 

    HANDLE CreateThread(
    LPSECURITY_ATTRIBUTES lpThreadAttributes,  
     
    DWORD dwStackSize,  指定初始提交栈的大小
     
    LPTHREAD_START_ROUTINE lpStartAddress,
                //由线程执行,表示线程的起始地址,指定线程入口函数,
             //该入口函数的参数类型以及返回类型要与ThreadProc()函数声明的类型要保持一致
    LPVOID lpParameter,  //指定一个单独的值传递给线程
    DWORD dwCreationFlags, //指定控件线程创建的附加标记
    LPDWORD lpThreadId );   //指向一个用来接收线程的标识符变量

    参数1:指向SECURITY_ATTRIBUTES结构体的指针。

    vc终止线程有三种方法:   
      1.线程可以在自身内部调用AfxEndThread()来终止自身的运行   
        
      2.可以在线程的外部调用BOOL   TerminateThread(   HANDLE   hThread,   DWORD   dwExitCode   )来强行终止一个线程的运行,   
      然后调用CloseHandle()函数释放线程所占用的堆栈   

      TerminateThread会有资源泄漏,不要万不得已,不要用这个函数
        DWORD code;
      if(GetExitCodeThread(MonitorComm,&code))  //MonitorComm 你创建的线程句柄
       if(code==STILL_ACTIVE)
       {
         TerminateThread(MonitorComm,0);
         CloseHandle(MonitorComm);
       }

       这样就安全了
      3.第三种方法是改变全局变量,使线程的执行函数返回,则该线程终止。   
        
      下面的例子来演示第三种方法   
      全局变量m_end来表示是否要结束线程   
        
      bool   m_end   =   false;   
      HWND   hWnd;   
        
      启动线程:   
      CWinThread*   pThread;   
        
      hWnd   =   GetSafeHwnd();   
      pThread   =   AfxBeginThread(ThreadProc,hWnd);   
      pThread->m_bAutoDelete   =   false;   
        
      线程的函数   
      UINT   ThreadProc(LPVOID   pParam);   
      UINT   ThreadProc(LPVOID   pParam)   
      {   
      while(!m_end)   
      {   
      AfxMessageBox("test;");   
      ::Sleep(2000);   
      }   
      return   0;   
      }   
        
      终止线程代码   
      m_end   =   true;   
      WaitForSingleObject(pThread->m_hThread,INFINITE);       //等待线程结束   
      delete   pThread;                 //删除线程 

  • 相关阅读:
    python query-string处理Query String Parameters参数
    谷歌chrome浏览器大量书签消失,怎么恢复历史?
    VUE懒加载的table前端搜索
    SQL排序分组
    使用sqlparse解析table_name,超级强大,支持子查询, left join等
    20211008杂记
    [BZOJ2216|Luogu P3515] [Poi2011]Lightning Conductor (线性解法)
    矩阵的特征值和特征向量
    dp多维状态的优化
    02-servlet基本介绍访问流程生命周期Service、doGet、doPost
  • 原文地址:https://www.cnblogs.com/wqj1212/p/1093882.html
Copyright © 2020-2023  润新知