我已经问过这个问题,但是在SCTP环境中,我没有得到任何答案所以我会在这里问tcp因为我可以在两个协议中使用相同的设计(几乎)
假设主程序打开了多个tcp连接,我有多个线程,例如4个。
应用程序要求我以循环方式使用全部4个连接,但有时我需要通过一个特定的TCP连接发送,你可以说这是一个基于tcp的路由,所以我想的是创建4主程序中的tcp连接,带有以下文件描述符,
fd1
fd2
fd3
fd4
并与4个线程共享这些文件描述符,因此每个线程当然可以通过锁发送到这些fds中的任何一个,这是个好主意吗?如果不是你的建议么?
如果路由==某事,下面的伪代码将发送到tcp_fd [0],如果未指定路由,则发送到任何fds。环境是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);
}