代码之家  ›  专栏  ›  技术社区  ›  Jon Trauntvein

OSX是否支持poll()?

  •  -1
  • Jon Trauntvein  · 技术社区  · 14 年前

    我刚刚读了Marc Rochkind在“高级Unix编程”第二版中关于poll()函数的部分。在这一节中,作者提到在达尔文6.6下不支持poll(),我在互联网上看到了其他一些项目,它们表明poll()是在OSX上使用select()系统调用模拟的。我想对一个类使用poll(),因为它可能服务于大量的套接字,而且我担心超过select()可以使用的文件句柄数量的限制。如果我读到的语句是真的,那么是否有合适的方法来替代select()或者克服FD_SETSIZE限制?

    1 回复  |  直到 14 年前
        1
  •  2
  •   Mieko    14 年前

    poll(2)在10.3中被引入为select(2)之上的一个层,在10.4中得到了本机实现。

    在过去几年中,大多数基于BSD的系统都实现了poll()。如果您从poll()中获得实际好处(与select()相比),我建议您使用它。即使在仍然通过select()模拟poll()的系统上,最坏的情况下,您的性能也将是select()的性能,并有一个边际惩罚。

    kqueue(2) .