C++
起首实现出产者,界说出产者的函数,接管到数据放入队列之后,挪用notify_one函数来通知消费者处置

接实在现消费者函数,挪用函数wait期待接管旌旗灯号,若是接管到旌旗灯号,那么从队列中掏出数据然后处置,这里需要注重的是掏出数据之后,可以提前解锁,以便出产者可以或许尽快处置数据

最后别忘了在类的私有属性中界说线程锁、队列以及前提变量

完当作上面的步调之后,接下来就看下若何利用。起首经由过程线程的体例启动出产者,休眠一段时候后,再经由过程线程的体例启动消费者

调试运行的成果如下所示,这个申明先启动出产者再启动消费者,消费者也可以或许当作功处置出产者出产的数据

先启动消费者,休眠一段时候,再启动出产者

从输出成果信息看,消费者和出产者是瓜代处置的,而且消费者与出产者的处置是一一对应的

最后再总体看下出产消费者模式,这里需要注重的是消费者中挪用wait函数,需要添加匿名函数,匿名函数是判定队列是否为空,若是不为空,才继续往下处置数据,若是为空,那么继续wait, 这样做的原因是wait返回有可能不是因为接管到出产者发送的旌旗灯号

0 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!