Sobes.tech
Junior

Co je vícenásobnost?

sobes.tech AI

Odpověď od AI

Multithreading umožňuje současné provádění několika částí programu (vlákna) najednou, což činí aplikaci citlivější a efektivnější, zejména u úloh s intenzivním vstupem/výstupem nebo dlouhými výpočty.

Hlavní koncepty:

  • Proces: Spuštěný program s vlastním adresovým prostorem a zdroji.
  • Vlákno: Jednotka provádění uvnitř procesu, má vlastní zásobník, CPU registry, ale sdílí zdroje procesu (paměť, souborové handlery).
  • Plánovač vláken: Operační systém řídí provádění vláken, přepíná mezi nimi (přepínání kontextu).

Výhody:

  • Zvýšení odezvy uživatelského rozhraní.
  • Efektivnější využití zdrojů vícejádrových procesorů.
  • Zjednodušení asynchronního programování (např. pomocí modelů jako TPL).

Nevýhody:

  • Složitost synchronizace přístupu ke sdíleným zdrojům (race conditions, deadlocky).
  • Zvýšení režijních nákladů na tvorbu a správu vláken.
  • Obtížnější ladění.

V C# je vícevláknové programování realizováno pomocí tříd v prostoru názvů System.Threading a System.Threading.Tasks, zejména Thread, ThreadPool, Task, a klíčových slov async a await.

Příklad vytvoření jednoduchého vlákna:

using System.Threading;

// Vytvoření nového vlákna
Thread t = new Thread(DoWork);
// Spuštění vlákna
t.Start();

void DoWork()
{
    // Kód, který se provádí v samostatném vlákně
    Console.WriteLine("Práce v novém vlákně.");
}