2017-08-09 107 views
0

我正在写一个C++程序在Qt中有一个OnReceive(int值)事件。它捕获并将整数值push_back到std :: vector中。在另一个工作线程上,我可以访问这个向量,我可以设置一个信号量来等待20个值,然后我可以处理它们。生产者和消费者优化

我想做一些优化。

我的问题是如何将我的缓冲区或向量分割为0-4,5-10,11-19的3个部分,例如只要向量中有5个值可用(例如0到4) ,第二名工作人员开始处理他们,而第一个线程仍然继续获得其余的值?

通过这种方式我想我的线程之间有重叠。所以他们不需要连续运行。

谢谢。

+0

在互联网上搜索“双缓冲”。 –

回答

0

使用免等待的环形缓冲区。

升压声称有one

注意它是在无锁文件夹,但所有的方法算得上是线程安全和等待释放。