> 백엔드 개발 > C++ > C#에서 메시지를 처리할 때 병렬성을 어떻게 제한할 수 있나요?

C#에서 메시지를 처리할 때 병렬성을 어떻게 제한할 수 있나요?

DDD
풀어 주다: 2024-12-30 17:55:10
원래의
764명이 탐색했습니다.

How Can I Limit Parallelism When Processing Messages in C#?

C#을 사용하여 메시지 처리에서 최대 병렬성 제한

대량 항목 모음을 병렬로 처리할 때 최대 개수를 제어하는 ​​것이 바람직한 경우가 많습니다. 동시에 실행할 수 있는 작업입니다. 이는 리소스 활용도를 최적화하고 시스템 과부하를 방지하는 데 도움이 됩니다.

1,000개의 입력 메시지 모음을 반복하고 각각에 대해 작업을 시작하는 제공된 샘플 코드를 사용하면 메시지의 정확한 수를 예측하기 어렵습니다. 병렬로 처리됩니다. 그러나 일반적인 쿼드 코어 프로세서에서는 여러 메시지가 동시에 처리될 가능성이 높습니다.

최대 병렬 처리 제한

한 번에 처리되는 최대 메시지 수를 제한하려면 , MaxDegreeOfParallelism 옵션과 함께 Parallel.ForEach 메서드를 사용할 수 있습니다. 이 옵션은 병렬 실행에 사용할 수 있는 최대 스레드 수를 지정합니다. 예를 들어 아래 코드는 병렬 작업 수를 10으로 제한합니다.

Parallel.ForEach(messages, new ParallelOptions { MaxDegreeOfParallelism = 10 },
msg =>
{
    // logic
    Process(msg);
});
로그인 후 복사

Maintaining Sequence

위 코드에서는 메시지가 반드시 처리되지 않을 수도 있습니다. 컬렉션에 나타나는 순서와 동일합니다. 엄격한 순서를 보장하기 위해 AsParallel 확장 메서드를 사용할 수 있습니다.

var orderedMessages = messages.AsParallel();
Parallel.For(0, orderedMessages.Count(), i =>
{
    Process(orderedMessages[i]);
});
로그인 후 복사

이 코드에서 Parallel.For 메서드는 컬렉션을 병렬로 반복하는 루프를 생성하지만 각 반복 내에서 메시지는 다음과 같습니다. 처리되어 순차적으로 접근됩니다.

위 내용은 C#에서 메시지를 처리할 때 병렬성을 어떻게 제한할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿