在两个单独的线程之间共享一个队列,用于在 UDP 广播服务器中接收和处理数据
Posted
技术标签:
【中文标题】在两个单独的线程之间共享一个队列,用于在 UDP 广播服务器中接收和处理数据【英文标题】:Sharing a Queue between two Separate Threads for Receiving and Processing data in UDP Broadcast Server 【发布时间】:2013-03-15 05:44:45 【问题描述】:我创建了一个广播服务器,它一次必须有 10 个客户端。它必须能够一次从 10 个客户端读取数据并通过Broadcast Message to all the Clients
回复。为了让这种沟通更快,我决定让two Separate Threads at Server Side.
一个线程 1 将专门用于连续接收数据并将数据放入队列中。然后这个数据被另一个 Thread2 从队列中读取并完成处理。
即队列必须在 Thread1 和 Thread2 之间共享。
我怎样才能有效地做到这一点?这两个线程之间如何共享队列?
如果 Thread1 在同一个队列中写入而 Thread2 正在读取呢?
任何帮助将不胜感激。
【问题讨论】:
线程间共享数据,请看question。为防止线程读写相同的共享数据,需要synchronize访问共享数据。 我会在我尝试后告诉你它是如何工作的,但看起来很有帮助:) 谢谢 :) 【参考方案1】:主要思想是“消费者”等待直到有数据可用,“生产者”在数据可用时通知。这可以使用条件变量简单有效地完成。看看this article——作者实现了这样一个队列,每一步都有详细的解释。
【讨论】:
以上是关于在两个单独的线程之间共享一个队列,用于在 UDP 广播服务器中接收和处理数据的主要内容,如果未能解决你的问题,请参考以下文章