Sobes.tech
Junior

Čo je konkurencieschopnosť v kontexte viacvláknového spracovania?

sobes.tech AI

Odpoveď od AI

Súčasťou je schopnosť systému vykonávať viacero úloh súčasne, ktoré môžu zdieľať spoločné zdroje. V kontexte viacvláknového spracovania sa to dosahuje spustením viacerých vlákien, z ktorých každé môže spracovávať svoju úlohu.

Príklady mechanizmov, ktoré dosahujú súčasnosť v C#:

  • Trieda Thread: Priame vytváranie a správa vlákien.
    // Vytvorenie nového vlákna
    Thread newThread = new Thread(() => {
        // Kód bežiaci v novom vlákne
    });
    newThread.Start(); // Spustenie vlákna
    
  • Pool vlákien (ThreadPool): Opätovné použitie vlákien na zníženie nákladov na ich vytváranie a ničenie.
    // Pridanie úlohy do poolu vlákien
    ThreadPool.QueueUserWorkItem((state) => {
        // Kód bežiaci vo vlákne z poolu
    });
    
  • Úlohy (Task): Vyššia úroveň abstrakcie nad vláknami, súčasť Task Parallel Library (TPL). Vhodnejšie pre asynchrónne operácie.
    // Vytvorenie a spustenie úlohy
    Task.Run(() => {
        // Kód bežiaci v úlohe
    });
    

Konkurentnosť môže spôsobovať problémy pri prístupe k zdieľaným dátam (súťažné podmienky, deadlocky), čo si vyžaduje použitie synchronizačných mechanizmov ako:

  • lock
  • Mutex
  • Semaphore
  • Monitor