IO完成端口Linux等效

时间:2014-07-22 03:15:29

标签: linux multithreading winapi

Windows操作系统,一个线程模型,其中ThreadPool与IO完成关联,每次完成Async IO时释放〜一个线程,然后使用~release_ thread来处理IO完成。

虽然linux select可用于异步IO,但它似乎不支持IO Completion / ThreadPool逻辑。

是否有任何Linux等同于线程模型上方的IO Completion / ThreadPool?

1 个答案:

答案 0 :(得分:1)

我不知道直接执行此操作的任何内容,但您可以将select()循环与您自己的线程池结合使用以获得类似的行为。当select()返回并检查您的fd_set以查看哪些文件描述符已准备就绪时,将每个描述符推送到线程池进行处理。您仍然需要一个主线程来运行select()循环,独立于线程池来处理I / O事件。

这种方法的大部分复杂性在于如何跟踪每次迭代时select()调用中需要包含哪些描述符,以及线程池本身(因为POSIX提供线程但不是标准线程池API)。

您可能有兴趣使用像GLib这样的库,它提供了一个模块化main loop,可以帮助轮询不同的文件描述符集,以及thread pool实现。