在两个单独的线程之间共享队列,以便在UDP广播服务器中接收和处理数据

时间:2013-03-15 05:44:45

标签: multithreading udp

我创建了一个广播服务器,一次只能有10个客户端。它必须能够一次从10个客户端读取数据并通过Broadcast Message to all the Clients进行回复。为了快速沟通,我决定制作two Separate Threads at Server Side.

一个Thread1将专门用于连续接收数据并将数据放入队列中。然后,另一个Thread2从队列中读取该数据并完成处理。

即。必须在Thread1和Thread2之间共享队列。

我该如何有效地做到这一点?如何在这两个线程之间共享队列?

如果Thread1在同一个队列中写入并且Thread2正在读取怎么办?

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

主要思想是“消费者”等待一些数据可用,“生产者”会在数据可用时通知。这可以使用条件变量简单有效地完成。看一下this article - 作者实现了这样一个队列,并在每个步骤中附上详细解释。