C++多线程技术--API

1. windows API相关常用的线程函数

更多详见MSDN--Process and Thread Functions

1.1. CreateThread

    CreateThread将在主线程的基础上创建一个新线程,大致做如下步骤:
    1)在内核对象中分配一个线程标识/句柄,可供管理,由CreateThread返回
    2)把线程退出码置为STILL_ACTIVE,把线程挂起计数置1
    3)分配context结构
    4)分配两页的物理存储以准备栈,保护页设置为PAGE_READWRITE,第2页设为PAGE_GUARD
    5)lpStartAddr和lpvThread值被放在栈顶,使它们成为传送给StartOfThread的参数
    6)把context结构的栈指针指向栈顶(第5步)指令指针指向startOfThread函数

HANDLE WINAPI CreateThread(
  __in_opt   LPSECURITY_ATTRIBUTES lpThreadAttributes,
  __in       SIZE_T dwStackSize,
  __in       LPTHREAD_START_ROUTINE lpStartAddress,
  __in_opt   LPVOID lpParameter,
  __in       DWORD dwCreationFlags,
  __out_opt  LPDWORD lpThreadId
);

    1)lpThreadAttributes:指向SECURITY_ATTRIBUTES型态的结构的指针。在Windows 98中忽略该参数。在Windows NT中,它被设为NULL,表示使用缺省值。
    2)dwStackSize,线程堆栈大小,一般=0,在任何情况下,Windows根据需要动态延长堆栈的大小。   
    3)lpStartAddress,指向线程函数的指针,形式:@函数名,函数名称没有限制,但是必须以下列形式声明:   DWORD WINAPI ThreadProc (LPVOID lpParam) ,格式不正确将无法调用成功。   
    4)lpParameter:向线程函数传递的参数,是一个指向结构的指针,不需传递参数时,为NULL。   
    5)dwCreationFlags :线程标志,可取值如下 :
  (a)CREATE_SUSPENDED-----创建一个挂起的线程,
  (b)0---------------------------------表示创建后立即激活。   
    6)lpThreadId:保存新线程的id。   
    7)返回值&#

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值