작업 제한을 사용하여 일련의 작업을 순차적으로 실행
많은 수의 작업을 실행해야 하는 시나리오가 있다고 가정합니다(예: , 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!