【问题标题】:Why non-blocking TCP socket would spend a lot of time in ::write() call?为什么非阻塞 TCP 套接字会在 ::write() 调用中花费大量时间?
【发布时间】:2017-05-16 20:01:11
【问题描述】:

对于非阻塞 TCP 套接字,我希望 write()read() 在任何情况下都会立即返回(无论read() 是否可以填充缓冲区,无论write() 是否可以发送整个缓冲区)。

是否存在导致write() 在非阻塞模式下工作的明显时间(毫秒)?

【问题讨论】:

  • 不清楚您是在问为什么会发生这种情况,还是是否会发生这种情况会发生。您是否遇到过这种情况,或者这只是一个理论问题? “显着”不是以毫秒为单位定义的,而是以执行时间的百分比定义的。
  • 当你一遍又一遍地调用它直到它成功......

标签: sockets tcp


【解决方案1】:

原因很简单:线程不足。虚拟机正在从我的代码中窃取时间:例如,usleep(30000) 可能会在 800 毫秒后返回。

【讨论】:

    猜你喜欢
    • 2011-05-03
    • 1970-01-01
    • 2011-05-31
    • 1970-01-01
    • 2011-08-19
    • 2012-05-26
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多