0

私はこの質問をしましたが、SCTP環境では答えが得られなかったので、両方のプロトコルで同じ設計を使用できるので、ここではtcpで質問します(ほぼ)

メインプログラムによって開かれた複数の tcp 接続があり、たとえば 4 つの複数のスレッドがあるとします。

アプリケーションでは、ラウンドロビン方式で 4 つの接続すべてを使用する必要がありますが、特定の 1 つの TCP 接続を介して送信する必要がある場合があります。これは tcp ベースのルーティングであると言えます。次のファイル記述子を持つメインプログラム、

fd1
fd2
fd3
fd4

これらのファイル記述子を4つのスレッドと共有するため、各スレッドはもちろんロックを使用してこれらのfdのいずれかに送信できますが、それは良い考えですか? そうでない場合、あなたは何を提案しますか?

以下の疑似コードは、routing==something の場合は 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);


}
4

0 に答える 0