C++thread间的交互2(伪多线程例子)(C++多线程相关)

以下是单线程多线程分别处理数据,其中多线程有可能处理不了所有数据则程序会进入死循环,例子中假定work能处理完所有数据
在这里插入图片描述
在这里插入图片描述
上述多线程例子主线程和子线程锁用得非常密集,一个地方释放锁下个线程马上又进行上锁
好比一个包子只能给一条狗吃,另外四条只能光看着。。。实际上只能换伪多线程,依然是单线程在运行

针对以上问题可以在塞数据的时候减少加锁的代码,减少锁空间
在这里插入图片描述
但结果可能更糟糕,主线程进入sleep时会导致子线程while(!quit)在频繁的加锁和放锁,CPU占用率也会大大提高
在这里插入图片描述

发布了137 篇原创文章 · 获赞 33 · 访问量 1595

猜你喜欢

转载自blog.csdn.net/qq_39885372/article/details/103974854