想在MFC下实现两个线程的同步,使用双缓冲队列

时间:2022-07-01 10:04:55
想在MFC下实现两个线程的同步,典型生产者消费者模型,一个线程负责数据处理计算,一个线程负责显示,一次显示时间需要300MS左右,我想使用双缓冲队列来解决这两个线程的同步的问题
但是不知道如何入手?
不知道各位有没有什么代码可以参考参考?
先谢谢啦

1 个解决方案

#1


不要整那么复杂,就是用std:queue管理两个队列,姑且叫做queueEmpty和queueValid,生产者每次从queueEmpty.pop一个缓冲区,填写数据后,执行queueValid.push,排到queueValid中去;然后消费者每次从queueValid.pop一个缓冲区,读取数据后,执行queueEmpty.push,排到queueEmpty里面去。消费者和生产者两个线程各跑各的,只要pop不到东西就循环等吧。
以上是基本思路。
有了基本思路后,你可以使用EVENT+WaitForSignalObject来优化,避免循环等耗费CPU;
实现优化后,再加一个Quit的EVENT+WaitForMultipObject来处理推出的事情(可选了)。
收工。
尝试自己谢谢,会有收获的!

#1


不要整那么复杂,就是用std:queue管理两个队列,姑且叫做queueEmpty和queueValid,生产者每次从queueEmpty.pop一个缓冲区,填写数据后,执行queueValid.push,排到queueValid中去;然后消费者每次从queueValid.pop一个缓冲区,读取数据后,执行queueEmpty.push,排到queueEmpty里面去。消费者和生产者两个线程各跑各的,只要pop不到东西就循环等吧。
以上是基本思路。
有了基本思路后,你可以使用EVENT+WaitForSignalObject来优化,避免循环等耗费CPU;
实现优化后,再加一个Quit的EVENT+WaitForMultipObject来处理推出的事情(可选了)。
收工。
尝试自己谢谢,会有收获的!