이벤트를 큐에 넣고 병렬로 실행해야합니다.ThreadPool misses events
My C# 코드는 이벤트를 차단 컬렉션에 대기시키고 ThreadPool을 사용하여 작업자 스레드에서 각 이벤트를 실행합니다. 그러나 이벤트가 2,000 이벤트/초 이상의 속도로 대기열에 있으면 일부 이벤트가 누락됩니다.
이 문제를 스레드에서 스레드에 따라 악화, 들어오는 요청을 만들려면 :이 문제를 검색 할 때, 나는 어떤 스레드를 사용할 수없는 경우 ThreadPool이이 this link에서 어떤 요청을 거부하거나 저장할 수 있다는 것을 발견 수영장이 보류 될 수있다 또는 스레드 풀은 들어오는 요청을
주를 처리하기 위해 함께 사용 가능한 스레드가 없을 수 있습니다 주로하기 때문에 도을 거부 될 수 있습니다하십시오 코어 i5와 노트북을 사용하는 경우에만이 문제가 나타납니다, Core i7을 사용해 보았을 때 제대로 작동했습니다.
다음은 코드 조각입니다 :
public static void ExecuteEvents()
{
foreach (EventData data in blockingCollection.GetConsumingEnumerable())
{
switch (data.EventType)
{
case EventType1:
ThreadPool.QueueUserWorkItem(o =>
{
Function1(data);
});
break;
case EventType2:
ThreadPool.QueueUserWorkItem(o =>
{
Function2(data);
});
default:
break;
}
}
}
'ThreadPool'에 의해 거부 된 작업 항목에 대해 들어 본 적이 없습니다. 다른 것 같네요. –
다른 원인에 대해 어떻게 생각하십니까? @ JeroenvanLangen –
당신의 신비한 사라지는 것들이 eventtyp1 또는 2가 아니라고 결정한 경우에 대비하여 로그인을 시도해 보셨습니까? – BugFinder