Concurrency

Wprowadzenie

Concurrency (Współbieżność) to zdolność programu lub systemu do rozpoczynania, wykonywania i kończenia wielu zadań w nakładających się okresach czasu. Nie oznacza to koniecznie, że zadania wykonują się jednocześnie (to jest Parallelism).

Concurrency vs Parallelism

  • Concurrency – zadania nakładają się w czasie (mogą współdzielić jeden rdzeń procesora)
  • Parallelism – zadania wykonują się dosłownie jednocześnie na wielu rdzeniach

Modele współbieżności

  • Threads / Multithreading (Java, C++, Python threading)
  • Async / Event Loop (JavaScript, Node.js, async/await)
  • Actor Model (Erlang, Akka, Elixir)
  • Communicating Sequential Processes (CSP) (Go – goroutines + channels)
  • Coroutines / Fibers

Główne problemy współbieżności

  • Race Condition – wynik zależy od kolejności wykonania
  • Deadlock – dwa wątki czekają na siebie nawzajem
  • Livelock
  • Starvation
  • Resource Contention

Narzędzia i techniki

  • Mutexy, Semafory, Locki
  • Atomic operations
  • Immutable data + message passing
  • Transaction Memory
  • Software Transactional Memory (STM)

Znaczenie w AI i systemach rozproszonych

Współbieżność jest kluczowa przy trenowaniu modeli (Data Parallelism, Model Parallelism), obsłudze milionów zapytań jednocześnie (LLM inference) oraz w systemach rozproszonych.

Aktualny stan (2026)

Języki takie jak Go, Rust i Elixir są bardzo cenione właśnie za świetne wsparcie dla concurrency. W świecie AI coraz popularniejsze stają się frameworki umożliwiające efektywne współbieżne inferencję (vLLM, TensorRT-LLM, Outlines).

Powiązane pojęcia

Parallelism • Race Condition • Deadlock • Goroutines • Async/Await • Actor Model • Thread • Process • Distributed Systems

Dodano: 17 maja 2026