代码之家  ›  专栏  ›  技术社区  ›  Larry

linux套接字与C语言中的多线程

  •  4
  • Larry  · 技术社区  · 16 年前

    在创建线程时,最好让每个线程使用相同的UDP端口号打开自己的套接字到同一个目的地(因此需要100个单独的文件描述符),还是在主线程中打开一次套接字,并将该文件描述符传递给每个线程,以便每个线程都使用相同的套接字?每个线程每秒将生成大约20个数据包,每个数据包的长度大约为800字节。线程之间没有同步。

    4 回复  |  直到 16 年前
        1
  •  1
  •   Mark Wilkins    16 年前

    我不认为使用多个插座会有速度上的好处,除非可能在多主机上。物理网络层不能同时发送两个包。不过,我会有点担心,在没有同步的情况下使用单个套接字。我 认为

        2
  •  0
  •   Useless    16 年前

    单独的套接字写入是为您同步的(在套接字级别),并且假设您没有任何分组或相对的顺序依赖项,这将工作正常。

        3
  •  0
  •   jldupont    16 年前

    我想要一个 loose-coupling 方法-让所有线程独立。负荷似乎不算太大,所以 loose-coupling

    当然,有些人会不同意,但从系统的角度来看,松散耦合总是更好的。。。适用时:-)

        4
  •  0
  •   Sajad Bahmani    16 年前

    但是我认为你可以使用连接池(建立一些连接并借用到线程)和队列中的线程等待从池中给出连接。如果连接和线程的数量很大,性能就会损失[网络限制和你的机器限制]其他的解决方案是队列中所有的东西都不使用池和队列池提供更好的性能。

    推荐文章