c - pthread 和有点 "broadcast stream"

标签 c multithreading sockets pthreads

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

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

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

最佳答案

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

关于c - pthread 和有点 "broadcast stream",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34974107/

相关文章:

php - 使用 Web 应用程序实时跟踪 Android 手机

c - 快速浮点abs函数

ios - xcode 崩溃并显示 "Thread 1: signal SIGABRT"并且连接未链接

Java多线程向数据库插入百万条记录

sockets - 未创建 uwsgi 套接字

python - 在 Python 上使用套接字进行文件传输

C 宏编译器警告

c - 为什么文件无法打开/关闭

c - gdb: 未定义的输出格式 "z"

java - 我真的应该关心 servlet Action 类中的线程安全问题吗