unix上C中两个进程之间的套接字阻塞

时间:2011-01-04 16:05:03

标签: c sockets

感谢是否有人可以帮我找到更好的解决方案...

在我的应用程序中,linux机器上有一个TCP客户端(C)和其他TCP服务器(S)。

在生产环境中,在高负载时,此服务器有时会停止接收来自客户端的请求,因此会为客户端创建瓶颈,因为客户端是阻塞套接字。要在本地重新创建问题..我放置一个负载并将服务器放在GDB上这样就可以重新创建问题了。

任何人都可以建议一些其他机制来阻止套接字而不会干扰进程吗?

3 个答案:

答案 0 :(得分:0)

你想听到什么?如果服务器繁忙,也就是说,正在为其他进程提供服务,因为它们也会通过调度程序获得时间片的一部分,除了提高程序的优先级/时间片长度或降低它们的长度之外,你无能为力。

请注意,TCP实现通常使用套接字缓冲区,以便当进程当前忙于处理数据或等待下一个时间片时,某些传输可能继续发生。

你有一些代码要显示吗?

答案 1 :(得分:0)

Can anyone suggest some other mechanism to block the socket wihout
     

扰乱了这个过程?

在单独的线程中进行连接,以便不阻止整个过程

答案 2 :(得分:0)

我没有明白这一点,但我猜你已经实现了一个被阻止的tcp服务器。 如果这是真的,那么可能有一些方法可以解决它

  1. 使用多线程或事件驱动架构来提高I / O效率。
  2. 从其他人提取I / O方法代码
  3. 可能需要进行多处理以避免系统限制,例如打开文件的数量。