semaphoreslim:スロットリング非同期操作
.NET 4.5 Betaの
SemaphoreSlim.WaitAsync()
に制限します
代替:カスタムタスクスケジューラ<code class="language-csharp">public async Task MyOuterMethod() { // URLs to fetch var urls = new[] { "http://google.com", "http://yahoo.com", /* ... */ }; // Semaphore for throttling var throttler = new SemaphoreSlim(20); // Tasks for each URL var allTasks = new List<Task>(); foreach (var url in urls) { await throttler.WaitAsync(); allTasks.Add(Task.Run(async () => { using (var client = new HttpClient()) { try { await client.GetStringAsync(url); } finally { throttler.Release(); } } })); } // Wait for all tasks to complete await Task.WhenAll(allTasks); }</code>または、タスクパラレルライブラリ(TPL)をカスタムタスクスケジューラで使用して、同時実行を制御できます。 このスケジューラは、タスクの実行を管理し、同時実行制限を実施します。
概要
これらのスロットリング技術は、同時の非同期I/Oを効果的に管理し、システムの過負荷を防ぎ、パフォーマンスを最適化します。
以上がSemaphoreslimは、同時のAsync I/O操作を最適化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。