>백엔드 개발 >C++ >.NET에서 제한된 수의 동시 작업으로 많은 작업을 순차적으로 실행하려면 어떻게 해야 합니까?

.NET에서 제한된 수의 동시 작업으로 많은 작업을 순차적으로 실행하려면 어떻게 해야 합니까?

DDD
DDD원래의
2024-12-28 10:29:18877검색

How Can I Run Many Tasks Sequentially with a Limited Number of Concurrent Tasks in .NET?

작업 제한을 사용하여 일련의 작업을 순차적으로 실행

많은 수의 작업을 실행해야 하는 시나리오가 있다고 가정합니다(예: , 100), 동시에 실행되는 작업 수를 제한하려고 합니다(예: 10). 이 문제는 .NET Framework 4.0에 도입된 'Task' 클래스를 사용하여 효율적으로 해결할 수 있습니다.

주어진 시나리오에서는 'SemaphoreSlim' 클래스를 활용하여 동시에 실행되는 최대 작업 수를 제어할 수 있습니다. 'SemaphoreSlim'을 사용하면 동시 작업 수를 제한할 수 있는 세마포 개체를 생성할 수 있습니다.

다음은 원하는 동작을 달성하는 방법을 보여주는 샘플 구현입니다.

using System.Threading.Tasks;
using System.Threading;

class Program
{
    static void Main()
    {
        // Create a SemaphoreSlim object to limit the number of concurrent tasks to 10
        SemaphoreSlim maxThread = new SemaphoreSlim(10);

        // Create 115 tasks with each task performing a specific action
        for (int i = 0; i < 115; i++)
        {
            // Acquire a permit from the SemaphoreSlim object, blocking if the limit is reached
            maxThread.Wait();

            // Schedule a new task
            Task.Factory.StartNew(() =>
            {
                // Perform your desired task here
            }, TaskCreationOptions.LongRunning)
            // Once the task is complete, release the permit back to the SemaphoreSlim object
            .ContinueWith((task) => maxThread.Release());
        }
    }
}

이 구현에서는 , 각 작업은 실행되기 전에 'SemaphoreSlim' 객체로부터 허가를 얻습니다. 최대 허가 수(이 경우 10개)를 획득한 경우 세마포어는 허가가 해제될 때까지 후속 작업이 허가를 획득하지 못하도록 차단합니다.

이 접근 방식을 사용하면 일련의 작업을 순차적으로 실행할 수 있습니다. 미리 정의된 작업 수만 동시에 실행되도록 보장합니다. 모든 작업이 완료되면 'Main' 메소드가 종료되어 프로그램 종료를 나타냅니다.

위 내용은 .NET에서 제한된 수의 동시 작업으로 많은 작업을 순차적으로 실행하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.