2012-06-04 40 views
4

我正在尋找在Linux中的線程池抽象,它提供了與Win32線程池提供的內核調度程序支持相同的級別。具體而言,我有興趣找到一個線程池,它保持一定數量的線程運行。當正在運行的池線程阻塞I/O時,我希望線程池足夠聰明以啓動另一個線程運行。尋找一個Linux線程池api與OS調度程序支持

任何人都知道這樣的Linux的東西?

+0

什麼語言? C/C++? shell腳本? elisp的? – Gray

回答

3

如果沒有操作系統支持,你真的不能這樣做。沒有好的方法可以說明一個線程是在I/O上被阻止了。你必須在每次操作之前自動遞增一個計數器,這可能會阻止和減少之後的計數器。然後,您需要一個線程來監視該計數器,並在零以上時創建一個附加線程。 (刪除線程,如果他們閒置超過一秒左右)。

一般來說,這是不值得的努力。這隻適用於Windows,因爲它是「Windows方式」,而Windows是從底層開始構建的。對於Linux,您應該使用epollboost::asio。使用「Linux方式」而不是嘗試使Windows方式在非Windows操作系統上工作的東西。

你可以編寫自己的包裝器,在Windows上使用IOCP,在Linux上使用epoll等等。但是這些已經存在了,所以你不需要麻煩。