Concurrency

Wprowadzenie

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

Concurrency vs Parallelism

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

Modele współbieżności

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

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

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

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

Dodano: 17 maja 2026