我开发了一个服务器/多个客户端 TCP 应用程序。
客户端由 x 个线程组成,每个线程对自己的数据进行处理,然后通过 TCP 套接字将数据发送到服务器进行显示。
服务器基本上是一个有窗口的 GUI。服务器从客户端接收数据并显示它。
现在,问题是由于客户端内部有 40 个线程并且每个线程都想发送数据,我如何使用一个连接的套接字来实现呢?
我的建议:
我的方法是在 40 个线程中的每个线程中创建一个数据结构,在其中维护要发送的数据。然后创建一个单独的发送线程,在客户端有一个连接的套接字。该线程将从第一个线程的数据结构中读取数据,通过套接字发送数据,然后从第二个线程读取数据,依此类推。
困惑:
但我不确定这将如何实施,因为我对这一切都不熟悉?:( 如果一个线程正在写入数据结构并且发送线程尝试同时读取数据怎么办。我熟悉互斥锁、临界区等,但这对于我的简单应用程序来说听起来太复杂了。
除了我自己的建议之外的任何其他建议/评论都是受欢迎的。如果您认为我自己的方法是正确的,那么请帮助我解决我上面提到的困惑。
提前非常感谢:)
编辑:
我可以将定时器放在发送线程上,并在特定时间后发送线程挂起线程#1(以便它可以访问其数据结构而不会出现任何同步问题),从其数据结构中读取数据,通过 tcp 套接字发送数据,然后恢复 Thread#1,然后暂停 Thread#2,从其数据结构中读取数据,通过 tcp Socket 发送数据,然后恢复 Thread#2,依此类推。