Wątki, P-wątki i muteksy
#
Zakres wykładu
#
- Koncepcja wątków. Procesy jedno- i wielowątkowe.
- Zalety wielowątkowości. Skalowanie. Prawo Amdahla.
- Problemy programowania dla procesorów wielordzeniowych.
- Wątki poziomu jądra i użytkownika.
- Modele wielowątkowości
- Biblioteki wątków: POSIX threads, Windows threads. Co-routines, fibers
- Problemy wielowątkowości: fork/exec, obsługa sygnałów, anulowanie (cancellation), lokalne zmienne wątków (thread-local storage), interakcja z planistą (scheduler activations)
- Wątki POSIX (P-wątki):
- tworzenie wątków (
pthread_create()
) i ich kończenie (pthread_exit(), exit(), pthread_cancel()
, powrót z funkcji main()
) - atrybuty wątków
- przekazywanie parametrów do i z funkcji roboczej wątku.
- oczekiwanie na dołączalny wątek (
pthread_join()
), odłączanie wątku (pthread_detach
) - synchronizacja: motywacja, użycie
mutex
do ochrony (w sekcji krytycznej) współdzielonej danej przed współbieżnym dostępem. - Funkcje wielowejściowe (re-entrant) i odporne na wątki (thread safe)
- Sygnały i wątki; wątkowe maski blokowania sygnałów i ich wykorzystanie.
Materiały
#
- Prezentacja wykładowa
- Programy wykładowe
- Dodatkowa lektura: The GNU C library documentation: 1.2.2.1 POSIX Safety Concepts, 12.5 Streams and Threads
- Fragment Standardu Posix dotyczący kasowania (anulowania) wątków (thread cancellation)
- Stare Slajdy: Threads.pdf, POSIX_threads.pdf