VC++学习之线程篇

这篇博客探讨了在VC++中创建线程的四种方法,包括CreateThread、_beginthreadex、AfxBeginThread以及CWinThread类。重点讨论了线程句柄的管理和CloseHandle函数的使用,指出关闭句柄并不会立即结束线程,线程会继续执行直到return。同时,介绍了线程同步的四种方法:事件对象、信号量、临界区和互斥对象,提供了进一步的学习资源链接。
摘要由CSDN通过智能技术生成

在VC++中,常规的创建线程方式有四种:

1. 使用CreateThreadAPI提供的CreateThread函数;

2. 使用C++语言提供的_beginthreadex函数;

3. 在MFC程序中使用AfxBeginThread函数;

4. 使用MFC类库中CWinThread类创建线程。

 

使用1,2种方法,创建的线程会返回一个线程句柄HANDLE。对于线程句柄的理解中,有一个常规的问题:

为什么在创建了线程后,直接调用CloseHandle函数。这样是否会不执行线程而直接关闭线程?

       实际上调用CloseHandle只是关闭了线程句柄,并没有关闭线程。线程会继续执行,在执行完成后调用return才结束线程。

       创建线程后,操作系统会为其分配一个内核对象,并将该内核对象的引用计数置为2。CloseHandle只是将引用计数值减一,该引用计数不为零,所以不会清除,线程依旧会继续执行。

       线程句柄的作用是可以通过它开控制线程,如果关闭了句柄线程就会交给操作系统,用户不能改变它的状态了。

       常规的通过线程句柄进行的操作有挂起线程,唤醒以及中断等操作。

 

 

线程同步:

       同步方式有四种:

              1. 使用事件对象实现线程同步;

              2. 使用信号量对象实现线程同步;

              3. 使用临界区对象实现线程同步;

              4. 使用互斥对象实现线程同步。

      实现线程同步介绍找到了一份详细的介绍,参看http://blog.csdn.net/morewindows/article/details/7392749

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值