Sobes.tech
Junior — Middle

რას წარმოადგენს WaitAll და WhenAll მეთოდების გამოყენების განსხვავება ასინქრონულ პროგრამირებაში?

sobes.tech AI

პასუხი AI-სგან

C# ენაში WaitAll და WhenAll მეთოდები გამოიყენება რამდენიმე დავალების დასრულების მოსალოდნელობისთვის, მაგრამ აქვთ მნიშვნელოვანი განსხვავებები:

  • WaitAll — არის სინქრონული მეთოდი კლასი Task, რომელიც ბლოკავს მიმდინარე ნაკადს მანამ, სანამ ყველა გადაცემული დავალება არ დასრულდება. ის არ აბრუნებს შედეგს და არ მხარს უჭერს ასინქრონულ მოლოდინს.

  • WhenAll — არის ასინქრონული მეთოდი, რომელიც აბრუნებს დავალებას, რომელიც დასრულდება, როდესაც ყველა გადაცემული დავალება დასრულდება. საშუალებას აძლევს გამოიყენოთ await ბლოკირების გარეშე, რაც აუმჯობესებს პროგრამის შესრულებას და რეაგირების სიჩქარეს.

მაგალითი WhenAll-ის გამოყენების:

var tasks = new[] { Task.Delay(1000), Task.Delay(2000) };
await Task.WhenAll(tasks);
Console.WriteLine("ყველა დავალება დასრულდა");

მაგალითი WaitAll-ის გამოყენების:

var tasks = new[] { Task.Delay(1000), Task.Delay(2000) };
Task.WaitAll(tasks);
Console.WriteLine("ყველა დავალება დასრულდა");

ძირითადი განსხვავება ის არის, რომ WaitAll ბლოკავს ნაკადს, ხოლო WhenAll საშუალებას აძლევს ასინქრონულად მოლოდინს, ბლოკირების გარეშე.