> 백엔드 개발 > C++ > C# 작업을 사용하여 동시 작업 실행을 10으로 제한하려면 어떻게 해야 합니까?

C# 작업을 사용하여 동시 작업 실행을 10으로 제한하려면 어떻게 해야 합니까?

Patricia Arquette
풀어 주다: 2024-12-30 06:52:10
원래의
346명이 탐색했습니다.

How Can I Limit Concurrent Task Execution to 10 using C# Tasks?

작업을 통한 동시성 관리: 동시 실행 제한

귀하의 시나리오에서는 100개의 작업 세트를 동시에 실행하는 것을 목표로 하지만 주어진 시간에 최대 10개의 작업을 실행할 수 있습니다. 여기에는 적절한 작업 실행 및 리소스 활용을 보장하기 위한 동시성을 효과적으로 관리하는 것이 포함됩니다.

작업을 사용하여 이 요구 사항을 해결하려면 다음 접근 방식을 사용할 수 있습니다.

// Define a SemaphoreSlim to limit concurrent tasks to 10
SemaphoreSlim maxThread = new SemaphoreSlim(10);

// Iterate through the tasks
for (int i = 0; i < 115; i++)
{
    // Wait for the SemaphoreSlim to allow a new task to execute
    maxThread.Wait();

    // Create a new task and schedule it
    Task.Factory.StartNew(() =>
    {
        // Perform the task's operation
    }, TaskCreationOptions.LongRunning)

    // Release the SemaphoreSlim when the task completes
    .ContinueWith((task) => maxThread.Release());
}
로그인 후 복사

이 구현에서:

  1. maxThread라는 SemaphoreSlim은 최대 동시 작업 수를 나타내는 초기 개수 10으로 생성됩니다. 허용됩니다.
  2. 루프는 115개 작업을 반복합니다.
  3. 각 반복 내에서 코드는 SemaphoreSlim이 허가를 획득할 때까지 기다리며 동시에 10개 이하의 작업이 실행되도록 합니다.
  4. 허가를 취득하면 Task.Factory.StartNew를 사용하여 새로운 작업이 생성됩니다. TaskCreationOptions.LongRunning 옵션은 작업을 실행하는 데 더 오랜 시간이 걸릴 수 있음을 나타냅니다.
  5. ContinueWith를 사용하여 작업에 연속이 추가됩니다. 작업이 완료되면 연속 작업은 SemaphoreSlim에 대한 허가를 해제하여 대기 중인 다른 작업이 실행을 시작할 수 있도록 합니다.

이 접근 방식은 주어진 순간에 10개의 작업만 실행되도록 보장하여 동시성을 효과적으로 관리하고 리소스를 방지합니다. 배고픔.

위 내용은 C# 작업을 사용하여 동시 작업 실행을 10으로 제한하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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