Wprowadzenie do współczesności
Paralelizm i wątki są kluczowe dla tworzenia aplikacji mobilnych reagujących na użytkownika, które nie blokują wątku interfejsu użytkownika, wydajnie wykonują pracę tła i wykorzystują wiele jądra procesora. Poprawne zarządzanie współczesnością gwarantuje płynny doświadczenie użytkownika, efektywne wykorzystanie zasobów oraz zapobiega problemom takim jak wypadki konkurencyjne i blokady.
Każdy system operacyjny dostarcza własne mechanizmy współczesnościowe: iOS używa Grand Central Dispatch, async/await i kolejek Operation; Android używa wątków, korejerów i Executorów. Rozumienie tych mechanizmów oraz najlepszych praktyk jest nieodmiernie ważne.
Mechanizmy współbieżności
Współbieżność na iOS
Grand Central Dispatch (GCD):
Kolejki wywołań
Kolejka glowna dla interfejsu uzytkownika
Tlo, kolejki tloiste
Serialne vs. jednoczesne
async/await (Swift):
Struktura współbieżności
Zarzadzanie zadaniami
Schematy async/await
Oszczędzanie miejsca_actor
Kolejki operacji:
Zarzadzanie zaleznosciami
Anulowanie operacji
Zarzadzanie priorytetami
Współbieżność na Androidzie
Wątki:
Glowny watek dla interfejsu uzytkownika
Tlo, wątki tloiste
Poochy wątkowe
Korutyny (Kotlin):
Lekkie wątki
Funkcje zawieszane
Struktura współbieżności
Flow dla strumieni
Współbieżne wykonawcy:
Wykonawcy z poole wątków
Wykonawcy z planowanymi zadaniami
Zarzadzanie zadaniami
Bezpieczeństwo wątków
Często występujące problemy
Warunki wyścigowe
Race conditions
Zabitych wątków
Aktualizacje interfejsu użytkownika z wątków tła
Rozwiązania
Znaczki i synchronizacja
Bezpieczne struktury danych
Model aktora
Niewzruszone dane
Poprawna komunikacja między wątkami
Spróbuj to na żywo
Wszystko powyżej działa w Twojej przeglądarce — otwórz Visualizator Funkcji Hash i zmieniaj parametry podczas działania. Nic nie instalujesz, nic nie przesyłasz, cała modelika istnieje w jednym okienku.
Wypróbuj na żywo
Wszystko powyżej działa bezpośrednio w Twojej przeglądarce — otwórz Hash Function Avalanche Visualizer i zmieniaj parametry podczas działania. Nic nie jest instalowane ani przesyłane na serwer, cały model działa w jednej karcie.
▶ Otwórz symulację Hash Function Avalanche Visualizer