Boost学习摘要 三线程

本文介绍了Boost库中线程管理的实现方式,包括线程组thread_group的使用、线程死锁的问题及解决方法,以及如何让线程运行类成员函数等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

boost库在工作(16)线程之一
http://blog.youkuaiyun.com/caimouse/article/details/8714152
boost::thread(boost::bind(Run, 1));

boost库在工作(17)线程之二
http://blog.youkuaiyun.com/caimouse/article/details/8741295 
boost::thread_group
主要使用了boost库里的线程池类thread_group,它提供了多个线程创建、保存、退出等管理。比如使用create_thread函数可以创建多个线程,每个线程都调用函数Run运行。使用join_all函数来确保所有线程运行,都从线程运行函数里退出来,如果其中一个线程没有办法退出,那么就会一直等待的。

boost库在工作(18)线程之三  死锁
http://blog.youkuaiyun.com/caimouse/article/details/8742324
static boost::mutex mutexCout;      //boost::mutex锁
boost::lock_guard<boost::mutex> autoLock(mutexCout);
类boost::lock_guard,这个类是一个自动锁的类,所谓的自动锁,就是在构造函数里调用上锁函数,在析造函数里调用解锁函数,这样在这个类boost::lock_guard声明的对象的生命周期内,都可以防止别的线程来访问锁住的相关代码。
本例中由共用同一个全局锁g_mutexAll,并且在第一个函数里添加了自动锁,也在第二个函数里添加自动锁,同时再调用第一个函数,结果在第二个函数就形成了递归调用的关系,导致死锁发生。

boost库在工作(19)线程之四  防止死锁
http://blog.youkuaiyun.com/caimouse/article/details/8797771
在boost库里提供同一个函数递归调用时使用的锁boost::recursive_mutex,当同一个线程调用时,碰到相同已经上锁的锁时,还可以继续往下执行。这时就不用担心同一个线程调用不同的函数时造成死锁了。

boost库在工作(20)线程之五
http://blog.youkuaiyun.com/caimouse/article/details/8831773
让线程运行类里的成员函数
m_threadGroup.create_thread(boost::bind(&CThreadBase::Run, this,i));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值