对于Thread Pool代码里的一个疑问?
没仔细看代码,但lambda值捕捉this是C++17的事,所以这里的mutex都是同一个锁。不太确定你说的是什么情况,但是线程池本来就只是线程分配阶段串行,而各线程是并行的,所以自然会有多个线程“依次”获得锁。代码里用了条件变量,cv在wait的时候是会释放锁的。
■网友
第二个问题:是同一个,也不可能有2个不同的。。
【对于Thread Pool代码里的一个疑问?】 第一个问题:其实不知道你问什么,“为什么初始化的4个线程都能跨过这个临界区?“,你是问为什么他们unlock了这个mutex,以至于后面enqueuer task的时候没有任何问题吗?
因为condition_variable本身啊,condition_variable.wait,会先查后面的条件满足不,如果不满足(task queue为空),就unlock mutex,然后休眠。下次起来的时候,会先尝试lock,然后再查一下后面的条件满足不?以此类推。
■网友
是 下一题
推荐阅读
- 5.1声道片源对于没有5.1硬件系统的用户来说有意义吗
- |常州天宁:检察建议让“忙道”回归盲道
- 英雄联盟快捷键Q、E、R咋操作呢
- 2017年iPhone性价比最高的是哪款产品
- 友盟对于日活是怎么样统计的
- 贵州对于大数据有哪些方面的地域优势为啥都是贵州呢
- 对于一个程序员、靠拿工资攒钱买房、是不是太遥远
- 客服对于一个电商平台起到多大的作用
- 综艺|
- 汽车|明明白白换新车 朗逸车主换新款昂科威
