Junior — Middle
Чӣ гуна механизмии интизорӣ барои анҷоми вазифаҳо дар дохили гурӯҳи сӯрохиҳо амалӣ мешавад?
sobes.tech AI
Ҷавоб аз AI
Дар C# механизмии интизорӣ барои анҷоми вазифаҳо дар дохили пули сӯрохҳо одатан бо истифода аз синф Task ва усулҳои ҳамоҳангсозӣ, монанди Task.Wait(), Task.WaitAll() ё Task.WhenAll() амалӣ карда мешавад.
Вақте вазифаҳо тавассути Task.Run ё ThreadPool.QueueUserWorkItem дар дохили пули сӯрохҳо оғоз меёбанд, метавон онҳоро интизор шуд, ки бо даъвати:
Task[] tasks = new Task[3];
tasks[0] = Task.Run(() => { /* кор */ });
tasks[1] = Task.Run(() => { /* кор */ });
tasks[2] = Task.Run(() => { /* кор */ });
// интизорӣ барои анҷоми ҳамаи вазифаҳо
Task.WaitAll(tasks);
Агар мустақиман ThreadPool истифода шавад, метавон ManualResetEvent ё CountdownEvent-ро барои интизорӣ истифода бурд:
CountdownEvent countdown = new CountdownEvent(3);
for (int i = 0; i < 3; i++)
{
ThreadPool.QueueUserWorkItem(_ => {
// кор
countdown.Signal(); // кам кардани ҳисоббарор
});
}
// интизор шудан барои анҷоми ҳамаи вазифаҳо
countdown.Wait();
Инчунин, механизмии интизорӣ ба ҳамоҳангсозии сӯрохҳо ва истифодаи усулҳо ва синфҳои махсус барои бастани сӯрохии ҳозира то анҷоми ҳамаи вазифаҳои оғозшуда асос ёфтааст.