Windows多线程编程

1、创建线程

函数原型:
HANDLEWINAPI CreateThread(
  LPSECURITY_ATTRIBUTES lpThreadAttributes,
  SIZE_T dwStackSize,
  LPTHREAD_START_ROUTINE lpStartAddress,
  LPVOID lpParameter,
  DWORD dwCreationFlags,
  LPDWORD lpThreadId
);
函数说明:
第一个参数表示线程内核对象的安全属性,一般传入NULL表示使用默认设置。
第二个参数表示线程栈空间大小。传入0表示使用默认大小(1MB)。
第三个参数表示新线程所执行的线程函数地址。
第四个参数是传给线程函数的参数。
第五个参数指定额外的标志来控制线程的创建,为0表示线程创建之后立即就可以进行调度,如果为CREATE_SUSPENDED则表示线程创建后暂停运行,这样它就无法调度,直到调用ResumeThread()。
第六个参数将返回线程的ID号,传入NULL表示不需要返回该线程ID号。

函数返回值:
成功返回新线程的句柄,失败返回NULL。 

应该使用更优的函数_beginthreadex,_beginthreadex内部仍然调用CreateThread,但它会为每一个线程创建各自己的私有数据,以便其安全的使用标准C库(如errno等)。需要包含<process.h>

2、线程退出

A、线程自己主动return
B、线程自己调用VOID ExitThread(DWORD dwExitCode)退出(优先选择编译器推荐的_endThread)
C、进程内的其它线程强制其它线程退出,调用BOOL TerminateThread( HANDLE hThread, DWORD dwExitCode);,通过调用WaitForSingleObject等待线程终止,BOOL GetExitCodeThread( HANDLE hThread, LPDWORD lpExitCode);获取线程退出码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值