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

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

针对以上问题可以在塞数据的时候减少加锁的代码,减少锁空间
C++thread的间的交互2(伪多线程例子)(C++多线程相关)
但结果可能更糟糕,主线程进入sleep时会导致子线程while(!quit)在频繁的加锁和放锁,CPU占用率也会大大提高
C++thread的间的交互2(伪多线程例子)(C++多线程相关)