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ě.");
}