Junior — Middle
İş parçaları hovuzunda tapşırıqların tamamlanmasını gözləmə mexanizmi necə həyata keçirilir?
sobes.tech Süni İntellekt
AI-dan cavab
C# dilində, iş parçacığı hovuzunda tapşırıqların tamamlanmasını gözləmə mexanizmi adətən Task sinfi və Task.Wait(), Task.WaitAll() və ya Task.WhenAll() kimi sinxronizasiya metodlarından istifadə etməklə həyata keçirilir.
Tapşırıqlar Task.Run və ya ThreadPool.QueueUserWorkItem vasitəsilə iş parçacığı hovuzunda başladıqda, onların tamamlanmasını gözləmək üçün aşağıdakı kimi çağırıla bilər:
Task[] tasks = new Task[3];
tasks[0] = Task.Run(() => { /* iş */ });
tasks[1] = Task.Run(() => { /* iş */ });
tasks[2] = Task.Run(() => { /* iş */ });
// Bütün tapşırıqların tamamlanmasını gözləmək
Task.WaitAll(tasks);
Əgər birbaşa ThreadPool istifadə olunursa, ManualResetEvent və ya CountdownEvent tətbiq oluna bilər:
CountdownEvent countdown = new CountdownEvent(3);
for (int i = 0; i < 3; i++)
{
ThreadPool.QueueUserWorkItem(_ => {
// iş
countdown.Signal(); // sayğacı azaldır
});
}
// Bütün tapşırıqların tamamlanmasını gözləmək
countdown.Wait();
Beləliklə, gözləmə mexanizmi iş parçacığının sinxronizasiyasına və bütün başladılmış tapşırıqların tamamlanmasına qədər cari iş parçacığını bloklamaq üçün xüsusi metodlar və sinflərdən istifadə etməyə əsaslanır.