寻找具有OS调度程序支持的Linux threadpool api

时间:2012-06-04 17:39:36

标签: linux multithreading scheduler pool

我正在寻找Linux中的线程池抽象,它提供与Win32线程池提供的相同级别的内核调度程序支持。具体来说,我有兴趣找到一个维护一定数量的运行线程的线程池。当正在运行的池线程在I / O上阻塞时,我希望线程池足够智能以启动另一个运行的线程。

任何人都知道这样的Linux吗?

1 个答案:

答案 0 :(得分:3)

如果没有操作系统支持,你真的无法做到这一点。没有好的方法可以告诉I / O上的线程被阻止。你最终必须在每次可能阻塞和减少它的操作之前以原子方式递增计数器。然后你需要一个线程来监视该计数器并创建一个额外的线程,如果它高于零。 (如果线程闲置超过一秒钟,则删除线程。)

一般来说,这不值得。这只适用于Windows,因为它是“Windows方式”,Windows是从头开始构建的。对于Linux,您应该使用epollboost::asio。使用“Linux方式”的东西,而不是试图让Windows方式在非Windows操作系统上运行。

您可以编写自己的封装程序,在Windows上使用IOCP,在Linux上使用epoll等。但这些已经存在,所以你不必费心。