INF.04Języki i Składnia Programowania
Wielowątkowość i Programowanie Asynchroniczne (async/await)
Równoległe lub asynchroniczne wykonywanie kodu: Wątki (Thread) wykorzystują wielordzeniowość CPU, a słowa async/await zapobiegają blokowaniu interfejsu GUI podczas operacji We/Wy.
1. Asynchroniczność (async / await):
Pozwala na zwolnienie wątku interfejsu użytkownika (UI Thread) podczas oczekiwania na długotrwałe operacje (pobieranie danych z bazy, zapytań sieciowych HTTP). Interfejs aplikacji nie 'zamraża się'.
CSHARP
public async Task<string> PobierzDaneAsync(string url) {
using HttpClient client = new HttpClient();
string wynik = await client.GetStringAsync(url); // nie blokuje UI
return wynik;
}2. Sekcja krytyczna i Zakleszczenie (Deadlock):
- Sekcja krytyczna /
lock: Blok kodu, w którym może znajdować się tylko jeden wątek jednocześnie, chroniąc współdzielone zmienne przed wyścigiem (race condition). - Zakleszczenie (Deadlock): Sytuacja, w której wątek A czeka na zasób zablokowany przez wątek B, a wątek B czeka na zasób zablokowany przez wątek A – oba programy zatrzymują się na stałe.
Chcesz sprawdzić to pojęcie w praktyce?
Przeszukaj pytania z oficjalnych arkuszy CKE powiązane z hasłem Wielowątkowość i Programowanie Asynchroniczne (async/await) lub rozpocznij trening.