0
我試圖將C#線程池移植到C++中,但遇到了一些嚴重問題。一些C#線程池的特點是:我應該如何在C++中實現線程池?
- 定義超載明確
- 每個線程定義使用的AutoResetEvent
- 在線程中的每個工作項的併發線程的最大數量,以便它可以有委託職能作爲其私人成員。
例如,
private static void RunOrBlock(WorkItem workitem) {
workItem.ThreadIndex = WaitHandle.WaitAny(threadUnoccupied);
ThreadPool.QueueUserWorkItem(threadWorker, workItem);
}
private static void threadWorker(object o) {
WorkItem workItem = (workItem) o;
workItem.Run();
threadUnoccupied[workItem.ThreadIndex].Set();
}
工作項目被定義爲:
public abstract class WorkItem {
protected int threadIndex;
public abstract void Run();
public int ThreadIndex {
get { return threadIndex; }
set { threadIndex = value; }
}
是否有人知道是否存在具有類似功能的一個開放源碼的線程池?如果沒有,那麼實施這種線程池的正確方法是什麼?謝謝!
嘗試Boost.Threadpool非常treadpool: - ) –
有兩件事情:1)編寫一個合理的線程池實現需要大概一週的時間,尤其是如果使用C++ 11; 2)沒有Boost.Threadpool庫,我不推薦在sourceforge上使用線程池,這是非常低效和天真的設計。 –
http://msdn.microsoft.com/en-us/library/windows/desktop/ms686980%28v=vs.85%29.aspx –