6

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

任何人都知道这样的Linux?

4

1 回答 1

4

如果没有操作系统支持,您真的无法做到这一点。没有好的方法可以判断线程在 I/O 上被阻塞。您最终不得不在每个可能阻塞的操作之前自动增加一个计数器并在之后减少它。然后您需要一个线程来监视该计数器并在它高于零时创建一个额外的线程。(如果线程空闲超过一秒左右,则删除线程。)

一般来说,这不值得努力。这只适用于 Windows,因为它是“Windows 方式”,并且 Windows 是从头开始构建的。对于 Linux,您应该使用epollor boost::asio。使用以“Linux 方式”做事的东西,而不是试图让 Windows 方式在非 Windows 操作系统上工作。

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

于 2012-06-04T21:45:26.013 回答