Sobes.tech
Junior

Czym jest wielowątkowość?

sobes.tech AI

Odpowiedź od AI

Wielowątkowość pozwala na wykonywanie kilku części programu (wątków) jednocześnie, co sprawia, że aplikacja jest bardziej responsywna i wydajna, szczególnie w zadaniach z intensywnym wejściem/wyjściem lub długotrwałymi obliczeniami.

Główne koncepcje:

  • Proces: Uruchomiony program z własną przestrzenią adresową i zasobami.
  • Wątek: Jednostka wykonawcza w obrębie procesu, posiada własny stos, rejestry CPU, ale dzieli zasoby procesu (pamięć, uchwyty plików).
  • Planista wątków: System operacyjny zarządza wykonywaniem wątków, przełączając się między nimi (przełączanie kontekstu).

Zalety:

  • Zwiększona responsywność interfejsu użytkownika.
  • Efektywniejsze wykorzystanie zasobów wielordzeniowych procesorów.
  • Uproszczenie programowania asynchronicznego (np. przez modele TPL).

Wady:

  • Złożoność synchronizacji dostępu do zasobów współdzielonych (warunki wyścigu, deadlock).
  • Zwiększone koszty tworzenia i zarządzania wątkami.
  • Trudności w debugowaniu.

W C# wielowątkowość realizowana jest przy użyciu klas z przestrzeni nazw System.Threading i System.Threading.Tasks, w szczególności Thread, ThreadPool, Task, oraz słów kluczowych async i await.

Przykład tworzenia prostego wątku:

using System.Threading;

// Tworzenie nowego wątku
Thread t = new Thread(DoWork);
// Uruchomienie wątku
t.Start();

void DoWork()
{
    // Kod wykonywany w osobnym wątku
    Console.WriteLine("Praca w nowym wątku.");
}