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

选择呼叫似乎没有超时

  •  0
  • martsbradley  · 技术社区  · 16 年前

    大家好,

    对于winsock和threads有什么需要注意的吗?因为某些原因,在几个小时之后,select调用似乎都没有超时。一个多线程程序可以从多个线程中选择而没有问题吗?

    我知道我应该有一个线程监听所有三个套接字,但这将是一个很大的变化,这个应用程序,我只想应用一个错误修复。

    干杯,

    2 回复  |  直到 16 年前
        1
  •  2
  •   D.Shawley    16 年前

    没有代码,我只能猜测。最常见的原因 select 超时到 工作不正常 这是 struct timeval 参数不会在循环的每次迭代中重置。一些(全部?) 实现更新timeout参数以反映阻塞所花费的时间量。然而,这通常会导致 选择 没有阻塞。

    选择 是不是出现了问题,而您没有出现其他问题,如堆栈损坏、内存泄漏等。?

    编辑 :我以前在Windows下使用过不同套接字上的“从多个线程中选择”没有问题。我忘了在最初的帖子中提到这一点。

        2
  •  -1
  •   martsbradley    16 年前

    我假设在不同的线程上使用select是可以的,因为下面的链接说它是grand。

    http://tangentsoft.net/wskfaq/intermediate.html#threadsafety