我已经问过这个问题,但在 SCTP 环境中,我没有得到任何答案,所以我会在这里用 tcp 提问,因为我可以在两种协议中使用相同的设计(几乎)
假设我有多个由主程序打开的 tcp 连接,并且我有多个线程,例如 4 个。
该应用程序要求我以循环方式使用所有 4 个连接,但有时我需要通过一个特定的 TCP 连接发送,你可以说它是一个基于 tcp 的路由,所以我想的是创建 4 个 tcp 连接主程序,具有以下文件描述符,
fd1
fd2
fd3
fd4
并与 4 个线程共享这些文件描述符,因此每个线程当然可以使用锁发送到这些 fd 中的任何一个,这是个好主意吗?如果不是,你有什么建议?
如果 routing==something,下面的伪代码将发送到 tcp_fd[0],如果未指定路由,则发送到任何 fd。环境是linux和C。
main()
{
tcp_fd[0] = create_connections(1);
tcp_fd[1] = create_connections(3);
tcp_fd[2] = create_connections(3);
tcp_fd[3] = create_connections(3);
create_threads(function_send, tcp_fd)
}
function_send(tcp_fd[])
{
get_data_from_fifo();
if(routing==something)
send_tcp_msg(tcp_fd[0],round_robin_disabled);
else
send_tcp_msg(to any tcp_fd,round_robin_enabled);
}