MFC对话框中一个按钮的响应函数实现两个功能:
显示数据同时处理数据,因此开两个线程,一个线程显示数据(开了一个定时器,响应WM_TIMER消息按照一定时间间隔向TeeChart图表添加数据并显示)同时在队列队尾添加数据,另一个线程从该队列队头去数据来处理。
下面就来解决这个案例。先来分析下:
这个案例是一个线程向队列中的队列头部读取数据,一个线程向队列中的队列尾部写入数据。看起来很像读者写者问题,但其实不然,如果将队列看成缓冲区,这个案例明显是个生产者消费者问题。因此我们仿照生产者消费者的思路来具体分析下案例中的“等待”情况:
1. 当队列为空时,读取数据线程必须等待写入数据向队列中写入数据。也就是说当队列为空时,读取数据线程要等待队列中有数据。
2. 当队列满时,写入数据线程必须等待读取数据线程向队

本文介绍了如何在MFC中利用双线程处理数据,一个线程负责显示并添加数据到队列,另一个线程从队列中读取并处理数据。通过分析,确定这是一个生产者消费者问题,而非读者写者问题。当队列为空或满时,线程需要等待。文中提到,根据队列实现方式(如STL vector或循环队列)可能需要互斥保护,并提出了使用信号量来管理队列中空位和产品数量的方法。
最低0.47元/天 解锁文章
2863

被折叠的 条评论
为什么被折叠?



