FRONT-END

MILTITHREAD

Wielowątkowość (Multithreading)

Wielowątkowość to technika programistyczna polegająca na równoległym wykonywaniu wielu zadań (wątków) w obrębie jednego procesu.

Celem wielowątkowości jest zwiększenie wydajności, responsywności oraz lepsze wykorzystanie zasobów sprzętowych.

PODSTAWY

Czym jest wątek?

Wątek (thread) to najmniejsza jednostka wykonawcza programu. Wątki działają w obrębie jednego procesu i współdzielą:

  • pamięć
  • zmienne globalne
  • zasoby systemowe

Każdy wątek posiada natomiast własny stos wywołań oraz licznik instrukcji.

DLACZEGO?

Po co stosuje się wielowątkowość?

  • obsługa wielu użytkowników jednocześnie
  • równoległe operacje wejścia/wyjścia
  • responsywne interfejsy użytkownika
  • przyspieszenie obliczeń
Bez wielowątkowości wiele aplikacji byłoby wolnych lub całkowicie nieużywalnych.
MODEL

Proces vs wątek

  • Proces – niezależna instancja programu
  • Wątek – część procesu, współdzieląca pamięć

Wątki są lżejsze od procesów i szybsze w tworzeniu, ale wymagają ostrożnego zarządzania współdzielonymi danymi.

PROBLEMY

Problemy wielowątkowości

  • race conditions (warunki wyścigu)
  • deadlock (zakleszczenie)
  • starvation
  • trudniejsze debugowanie

Błędy wielowątkowe są często trudne do odtworzenia i mogą pojawiać się losowo.

SYNCHRONIZACJA

Synchronizacja wątków

Aby uniknąć konfliktów, stosuje się mechanizmy synchronizacji:

  • mutexy
  • semafory
  • locki
  • sekcje krytyczne
lock(mutex) {
  sharedCounter++;
}
PRZYKŁAD

Przykład wielowątkowości (Java)

class Worker extends Thread {
  public void run() {
    System.out.println("Wątek działa");
  }
}

public class Main {
  public static void main(String[] args) {
    Worker w1 = new Worker();
    Worker w2 = new Worker();
    w1.start();
    w2.start();
  }
}
JĘZYKI

Wielowątkowość w różnych językach

  • Java – Thread, ExecutorService
  • C / C++ – pthreads
  • Python – threading, multiprocessing
  • JavaScript – Web Workers
  • Go – goroutines
NOWOCZESNE PODEJŚCIE

Współczesne podejścia

  • thread pools
  • model aktorów
  • programowanie reaktywne
  • asynchroniczność zamiast wątków
Coraz częściej stosuje się modele abstrakcyjne, które ukrywają bezpośrednie zarządzanie wątkami.
PODSUMOWANIE

Podsumowanie

Wielowątkowość to potężne narzędzie, które pozwala tworzyć wydajne i skalowalne aplikacje.

Jednocześnie wymaga dużej ostrożności, dobrej architektury oraz testowania.

1
HOME | CSS | HTML | CONTACT
RED | LIME | ORG |copy(Ⓒ)2023:xyh