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