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();
}
WorkItem에서는 다음과 같이 정의된다
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에서 threadpool을 추천 할 수 없다. 이것은 매우 비효율적이며 순진한 디자인이다. –
http://msdn.microsoft.com/en-us/library/windows/desktop/ms686980%28v=vs.85%29.aspx –