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

  • 相关阅读:
    springmvc 配置多视图,返回jsp,velocity,freeMarker,tiles(模板)等等
    spring,mybatis,多数据源配置
    springMVC分页,interceptor实现
    springMVC全局Exception异常处理SimpleMappingExceptionResolver
    百度FIS入门
    如何安装nodejs
    如何高效部署前端代码,如css,js...
    javascript url几种编码方式
    【转】RBAC权限管理
    elasticsearch 之IK分词器安装
  • 原文地址:https://www.cnblogs.com/cyx-b/p/12555142.html
Copyright © 2011-2022 走看看