pthread和kinda"广播流"

时间:2016-01-24 09:27:38

标签: c multithreading sockets pthreads

为所有线程提供包含数据的共享流的最佳方法是什么? 如果我有一个与每个用户连接交互的线程,那么每个用户输入必须可用于所有线程。我们可以想象一个简单的聊天,每个人都看到每个人的消息。

所以我虽然我可以使用某种"共享流",我可以在这个流和用户输入套接字之间使用某种select(),当我得到它时写在那里当有新的可用内容时,输入并从那里读取。我虽然有一些共享套接字,但它不会以这种方式工作,因为当第一个线程将从套接字读取数据时,它不再适用于其他线程。

那么实现这一目标的最佳和惯用方法是什么?

1 个答案:

答案 0 :(得分:0)

我认为你可能会把这里的工程设计得太过分了...... 您正在寻找的是某种SMP like thisthis,而不是流。 “流”概念可以由处理该传入信息流的不同进程(管理器进程,如果您愿意)处理。在您描述的聊天场景中,这并不是必要的,因为每个线程都可以向SMP添加在其自己的输入流上接收的任何内容。