Ta strona korzysta z plików cookie, abyśmy mogli zapewnić jak najlepszą obsługę. Informacje o plikach cookie są przechowywane w przeglądarce i wykonują takie funkcje, jak rozpoznawanie cię po powrocie do naszej witryny i pomaganie naszemu zespołowi w zrozumieniu, które sekcje witryny są dla Ciebie najbardziej interesujące i przydatne.
Programowanie współbieżne to technika pozwalająca programom komputerowym na wykonywanie wielu zadań jednocześnie. Współczesne oprogramowanie praktycznie nie istnieje bez współbieżności. Wyobraźmy sobie system operacyjny, który nie pozwala uruchomić więcej niż jednej aplikacji jednocześnie albo program, którego interfejs użytkownika wciąż się zawiesza oczekując na zakończenie innych operacji.
Dlatego każdy współczesny programista prędzej czy później musi zetknąć się z programowaniem wspóbieżnym. Niestety osoby, które zaczynają tworzyć aplikacje współbieżne (wielowątkowe) bez dobrego zrozumienia tego tematu popełniają błędy, które bardzo trudno znaleźć, a które skutkują nieprzewidywalnym lub niestabilnym działaniem aplikacji.
Takich błędów można łatwo unikać znając podstawowe problemy programowania współbieżnego i metody radzenia sobie z nimi. Właśnie tym metodom poświęcony jest ten kurs.
Dowiesz się z niego czym są procesy i wątki, czym grozi niewłaściwa synchronizacja wątków w programach wielowątkowych i jak korzystać z takich narzędzi jak sekcje krytyczne, muteksy i semafory do uzyskania właściwej synchronizacji.
Przykłady programistyczne w kursie są wykonywane w języku C i systemie operacyjnym Windows, ale omawiane techniki są typowe dla innych systemów operacyjnych i praktycznie każdego języka programowania obsługującego współbieżność.
Dobre zrozumienie współbieżności jest jednym z tych elementów, które odróżniają profesjonalnego programistę od osoby zajmującej się programowaniem jedynie amatorsko. Jednocześnie jest ono często uznawane za temat trudny do zrozumienia. Dzięki naszemu kursowi z łatwością postawisz pierwsze kroki w tej dziedzinie i unikniesz wielu błędów, których naprawienie może Ci zająć bardzo dużo czasu.
Pierwsze kroki
Więcej o tworzeniu wątków
-
9Wprowadzenie
-
10Ćwiczenie: Pierwszy program wielowątkowy
-
11Działanie programów wielowątkowych
Ten test ma pomóc Ci sprawdzić czy prawidłowo rozumiesz jak zmienia się kolejność wątków w programach wielowątkowych. Jest to bardzo ważna wiedza, która pozwoli Ci uniknąć w przyszłości wielu niespodziewanych błędów.
-
12Konwencje w API Windowsa
-
13Procesy i wątki
-
14Różnice między procesami, a wątkami
Ten test pomoże Ci sprawdzić czy dobrze rozumiesz czym różnią się procesy od wątków.
-
15Ćwiczenie: Monitor zasobów Windowsa
-
16Jak działa stos?
-
17Jak działa stos?
Sprawdź czy prawidłowo rozumiesz działanie stosu w programach komputerowych.
-
18Ćwiczenie: Dostępność pamięci w programach wielowątkowych
-
19Przełączanie kontekstu
-
20Przyczyny przełączenia wątków 1: przekazanie sterowania przez wątek
-
21Przyczyny przełączenia wątków 2: sloty czasowe
-
22Przyczyny przełączenia wątków 3: priorytety
Pułapki współbieżności: Wyścigi
-
23Wprowadzenie
-
24Ćwiczenie: dostęp do wartości zwracanej przez wątek
-
25Ćwiczenie: przekazywanie argumentów do nowego wątku
-
26Ćwiczenie: Przekroczenie czasu oczekiwania na zakończenie wątku
-
27Ćwiczenie: Wydruk opisów błędów
-
28Ćwiczenie: Łańcuchy znaków w API Windowsa
-
29Ćwiczenie: Rozmiar stosu
Pułapki współbieżności: Zagłodzenie wątków
Pułapki współbieżności: Zakleszczenie (deadlock)
Muteksy
Semafory
Zagrożenia związane z używaniem funkcji bibliotecznych
-
53Wprowadzenie
-
54Problem producenta i konsumenta
-
55Ćwiczenie: Producent - konsument
-
56Ćwiczenie: Losowy czas produkcji danych
-
57Usprawnienie systemu producent - konsument za pomocą kolejki
-
58Prosta implementacja kolejki
-
59Jak działają semafory?
-
60Ćwiczenie: Producent - konsument z kolejką
-
61Analiza programu producent - konsument
-
62Ćwiczenie: Kolejne usprawnienie programu producent - konsument