Junior
Kas yra konkurencingumas daugialypės srauto kontekste?
sobes.tech AI
Atsakymas iš AI
Konkurencija yra sistemos gebėjimas vienu metu vykdyti kelias užduotis, kurios gali dalintis bendrais ištekliais. Multithreading kontekste tai pasiekiama paleidus kelis srautus, iš kurių kiekvienas gali apdoroti savo užduotį.
Pavyzdžiai mechanizmų, kurie pasiekia konkurenciją C#:
Threadklasė: Tiesioginis srautų kūrimas ir valdymas.// Naujo srauto kūrimas Thread newThread = new Thread(() => { // Kodas, vykdomas naujame sraute }); newThread.Start(); // Srauto paleidimas- Srautų baseinas (
ThreadPool): Srautų pakartotinis naudojimas, siekiant sumažinti jų kūrimo ir naikinimo išlaidas.// Užduoties įkėlimas į srautų baseiną ThreadPool.QueueUserWorkItem((state) => { // Kodas, vykdomas sraute iš baseino }); - Užduotys (
Task): Aukštesnio lygio abstrakcija virš srautų, dalis Task Parallel Library (TPL). Patogiau naudoti asinchroninėms operacijoms.// Užduoties kūrimas ir paleidimas Task.Run(() => { // Kodas, vykdomas užduotyje });
Konkurencija gali sukelti problemų prieigą prie bendrų duomenų (varžybų sąlygos, užrakto blokavimai), todėl reikalinga sinchronizacijos mechanizmų naudojimas:
lockMutexSemaphoreMonitor