zoukankan      html  css  js  c++  java
  • HANDLE CreateThread()

    需要传递给新线程的任何参数都在CreateThread()的lpParamete中指定。线程函数在它的参数中接收这个32位的值。这个参数可以用作任何目的。函数返回它的退出状态。

    函数原型如下:

    #include <windows.h>
    
    HANDLE CreateThread(
    
          LPSECURITY_ATTRIBUTES       lpThreadAttributes,  //线程的一些属性
    
          DWORD       dwStackSize,  //声明线程的堆栈大小
    
          LPTHREAD_START_ROUTINE     lpStartAddress,   //传入线程执行的函数(函数地址)
    
          LPVOID        lpParameter,   //给线程传入参数
    
          DWORD        dwCreationFlags,   //创建线程的参数
     
          LPDWORD     lpThreadid    //表示新建线程的ID号
    
    );

    各个参数的作用如下:

    lpThreadAttributes:    

    指向SECURITY_ATTRIBUTES型态的结构的指针。设为NULL使用默认安全性。

    dwStackSize:           

    设置初始栈的大小,以字节为单位,如果为0,那么默认将使用与调用该函数的线程相同的栈空间大小。

    lpStartAddress:       

    指向线程函数的指针,函数名称没有限制,

    但是必须以下形式声明:DWORD WINAPI ThreadProc(LPVOID lpParam)。例如我将这个函数名定为DWORD WINAPI ClientThread(LPVOID lpParameter),

    lpParameter:              

    向线程函数传递的参数,是一个void*的指针,不需传递参数时,为NULL。

    dwCreationFlags:     

    线程的标志,可取值如下

    (1)CREATE_SUSPENDED:系统创建线程后,该线程处于挂起状态,并不马上执行,直至函数ResumeThread()被调用。

    (2)0:线程在被创建后立即开始执行。

    (3)STACK_SIZE_PARAM_IS_A_RESERVATION:未指定此标记,使用dwStackSize指定提交的大小。

    lpThreadid:             

    返回所创建线程的ID。如果创建成功则返回线程的句柄,否则返回NULL。   若不想返回线程ID,这个参数设置为为NULL。

     

    返回值:

    成功:返回线程句柄

    失败:返回NULL,调用GetLastError()获取失败原因。

    备注:

    (1)CreateThread 是Windows API中再主线程的基础上创建一个新线程。创建成功之后会返回一个hThread的handle,且内核对象的计数加1。

    (2)CloseHandle之后,引用计数减1,当变为0时,系统删除内核对象。handle仅仅是线程的一个“标识”。

    获取线程ID 

    DWORD WINAPI GetCurrentThreadid(void);                    返回获取当前的ID。

    关闭线程句柄(引用记数-1)

    BOOL CloseHandle(HANDLE hObject);

    关闭了一个线程句柄,引用计数-1,表示 我不对这个句柄对应的线程做任何干预(如waitforsingleobject之类),但并没有结束线程。

    返回值:

    成功:TRUE

    失败:FALSE 调用GetLastError()获得失败原因。 

    注意:如果关闭后再对句柄做任何都无用!

    挂起指定的线程

    DWORD WINAPI SuspendThread(HANDLE hThread);       hThread: 需要挂起的句柄。

    恢复被挂起的线程

    DWORD WINAPI ResumeThread(HANDLE hThread);        hThread: 需要挂起的句柄。

    休眠线程的执行

    VOID WINAPI Sleep(DWORD dwMilliseconds);                 dwMilliseconds:毫秒数。

     转自:

    https://blog.csdn.net/weixin_41794771/article/details/81535183

  • 相关阅读:
    修复PLSQL Developer 与 Office 2010的集成导出Excel 功能
    Using svn in CLI with Batch
    mysql 备份数据库 mysqldump
    Red Hat 5.8 CentOS 6.5 共用 输入法
    HP 4411s Install Red Hat Enterprise Linux 5.8) Wireless Driver
    变更RHEL(Red Hat Enterprise Linux 5.8)更新源使之自动更新
    RedHat 5.6 问题简记
    Weblogic 9.2和10.3 改密码 一站完成
    ExtJS Tab里放Grid高度自适应问题,官方Perfect方案。
    文件和目录之utime函数
  • 原文地址:https://www.cnblogs.com/cyx-b/p/12555142.html
Copyright © 2011-2022 走看看