为所有线程提供包含数据的共享流的最佳方式是什么? 如果我有一个线程与每个用户连接交互,那么每个用户输入都必须可用于所有线程。我们可以想象一个简单的聊天,每个人都可以看到每个人的消息。
所以我认为我可以使用某种“共享流”,我可以将其用于该流和用户输入套接字之间的某种select()
,当我得到时写入那里输入并在有新内容可用时从那里读取。我想拥有一些共享套接字,但它不能以这种方式工作,因为当第一个线程从套接字读取数据时,它不再可供其他线程使用。
那么实现这一目标的最佳且惯用的方法是什么?
最佳答案
我认为你可能在这里的工程有点太过分了.. 您正在寻找的是 SMP like this或this某种形式,而不是流。 “流”概念可以由处理传入信息流的不同进程(如果您愿意的话,可以是管理器进程)来处理。在您描述的聊天场景中,这并不是必需的,因为每个线程都可以将其自己的输入流上收到的任何内容添加到 SMP。
关于c - pthread 和有点 "broadcast stream",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34974107/