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

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

相关文章:

  • 2021-12-10
  • 2022-12-23
  • 2021-11-17
  • 2021-05-29
  • 2022-12-23
  • 2021-05-26
  • 2021-06-13
  • 2021-11-23
猜你喜欢
  • 2021-10-21
  • 2021-06-12
  • 2022-12-23
  • 2021-11-29
  • 2021-05-16
  • 2022-12-23
  • 2021-11-22
相关资源
相似解决方案