C 限制生产者/消费者线程中的消费者

C 限制生产者/消费者线程中的消费者,c,multithreading,concurrency,pthreads,C,Multithreading,Concurrency,Pthreads,有一个消费者线程和一个生产者线程。生产者线程数据采集缓慢。它向套接字查询数据,为使用者生成数据所需的时间明显长于使用者处理和发送数据所需的时间。问题是我正在更新一个显示,所以我希望更新速度减慢,使它们看起来是连续的,而不是突然更新 我现在使用的是双缓冲区,但消费者等待缓冲区交换的时间太长,因为生产者生成数据的时间太长。也许我可以将数据分割成更小的块,并使用队列代替?这样,生产商就可以一次给消费者提供一点食物了?有人遇到过这个问题吗 我将根据数据请求的速率将发送到客户端的速率锁定为一个频率。我原本

有一个消费者线程和一个生产者线程。生产者线程数据采集缓慢。它向套接字查询数据,为使用者生成数据所需的时间明显长于使用者处理和发送数据所需的时间。问题是我正在更新一个显示,所以我希望更新速度减慢,使它们看起来是连续的,而不是突然更新


我现在使用的是双缓冲区,但消费者等待缓冲区交换的时间太长,因为生产者生成数据的时间太长。也许我可以将数据分割成更小的块,并使用队列代替?这样,生产商就可以一次给消费者提供一点食物了?有人遇到过这个问题吗

我将根据数据请求的速率将发送到客户端的速率锁定为一个频率。我原本以为制作人会比现在快很多,所以我把它变成了制作人/消费者线程。这更像是一个帧速率问题,我需要以一致的速率同步输出。

为什么不让一个线程每秒更新一次屏幕?线程可以休眠一秒钟,醒来,检查生产者和消费者正在做什么,并根据他们的进度更新屏幕。你每秒钟都会得到更新。如果您希望它们更快或更慢,请更改计时器间隔。

为什么立即更新显示是一个问题?这不会使你的应用程序看起来比实际慢吗?是的。它改善了用户体验。现在它更新得非常快,然后停止,因为它需要获取更多数据。我想把时间分散开来,这样就不会停下来。有没有其他更简单的方法可以实现这一点?老实说,人为地限制消费线程有点违背线程的使用。使用线程的主要原因是,事情似乎进展得更快(在多处理的情况下,实际上进展得更快),因为生产者在读取时消费者不会阻塞。如果你降低消费程序的速度,你还可以从头开始整个多线程处理,然后在屏幕上写下任何经过连接的内容。不久前,有一个问题是关于平滑下载进度条,但是我懒得去搜索它。如果我在屏幕上写东西,当它用完数据时,它就会突然停止。我需要为发送到屏幕的每个迭代分配时间。我正在收集数据帧,但我希望帧显示为连续的,即使它们不是连续的。这将降低更新速度,但这是正常的。