ThreadPool과 함께 사용하여 병렬 처리에서 사용하는 다중 프로세서 객체가 있습니다. 어떤 프로세서를 사용할지는 기본적으로 들어오는 데이터에 따라 다르며 2000 가지 이상의 다른 유형이있을 수 있습니다. 그래서 내 응용 프로그램을 실행하자마자 사전에 1-2K 개의 프로세서를 만들고 ThreadPool에 들어오는 데이터에 따라 필요한만큼 실행합니다. 모든 프로세스에는 밀리 초 btw 이상 소요되지 않습니다.ThreadPool을 사용한 객체 동기화
는ThreadPool이 실행에 대한 나의 사이비 코드는 다음과 같습니다 :
public void onIncomingNewData(rawData)
{
if (!ThreadPool.QueueUserWorkItem(processors[rawData.Type.Id].Process, rawData))
{
Console.WriteLine("Work item cannot be queued!");
}
//Thread.Sleep(1);
}
여기 Processer 객체를 synchrnozing되어 내 문제; 그들은 내부 캐시를 가지고 있고, 같은 스레드 프로세스 프로세스 메소드를 실행하는 다중 스레드를 원하지 않습니다.
현재 프로세스 메서드 및 메서드 호출을 처리하는 다른 개인 메서드 내에서 "잠금"을 사용하고 있습니다. 그러나 이것을 수행하는 최선의 방법은 무엇입니까?
"동기화"의 의미에 따라 다릅니다. 이 동기화의 목표는 무엇입니까? – Will