Przejdź do treści głównej
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.