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