Sobes.tech
Junior

Ce este multitasking-ul?

sobes.tech AI

Răspuns de la AI

Multithreading permite executarea mai multor părți ale unui program (fire de execuție) în mod concurent, ceea ce face aplicația mai receptivă și eficientă, în special în sarcini cu intrare/ieșire intensă sau calcule prelungite.

Concepte principale:

  • Proces: Program în execuție cu propriul spațiu de adrese și resurse.
  • Fir de execuție: Unitate de execuție în interiorul unui proces, are propria stivă, registre CPU, dar împărtășește resursele procesului (memorie, handle-uri de fișiere).
  • Planificator de fire: Sistemul de operare gestionează execuția firelor, alternând între ele (schimbare de context).

Avantaje:

  • Crește receptivitatea UI.
  • Utilizare mai eficientă a resurselor procesoarelor multi-core.
  • Simplifică programarea asincronă (prin modele precum TPL).

Dezavantaje:

  • Complexitatea sincronizării accesului la resursele comune (condiții de cursă, deadlock-uri).
  • Creșterea costurilor de creare și gestionare a firelor.
  • Dificultăți în depanare.

În C#, multithreading-ul se implementează folosind clase din spațiul de nume System.Threading și System.Threading.Tasks, în special Thread, ThreadPool, Task, precum și cuvintele cheie async și await.

Exemplu de creare a unui fir simplu:

using System.Threading;

// Crearea unui nou fir
Thread t = new Thread(DoWork);
// Pornirea firului
t.Start();

void DoWork()
{
    // Cod executat într-un fir separat
    Console.WriteLine("Lucru într-un fir nou.");
}