可靠地将相同的数据广播到 C 中的多个套接字

Reliably broadcasting the same data to multiple sockets in C

我正在通过 TCP 套接字接收大量数据,我希望将这些数据发送到多个其他套接字(基本上是回应第一个套接字的内容)。我的要求如下:

目前我正在使用一个多线程系统,该系统维护从入站套接字读取的数据链表,并为每个出站套接字提供线程。当消息通过入站套接字到达时,我向出站套接字线程发出信号,从主线程创建链表的副本,并在不中断操作的情况下广播数据。我的链表结构在主线程上维护了一个 fd_set 的文件描述符,它用来确定消息何时被每个出站套接字成功复制和广播(从而将其从列表中删除)。

这显然有很多变化的部分,我想看看我是否遗漏了一些可以在这种情况下使用的基本知识。

你想做的和我这二十年一直在做的类似。

不要锁定和复制整个列表。相反,让每个发送线程只读取它当前发送的元素。让接收线程写锁定每个新元素并执行元素删除。允许一个长列表来容纳瞬态爆发。

您可以通过将列表内存映射到文件来使列表持久化。

祝你好运。这项任务非常重要。