Przetwarzanie współbieżne (ang. concurrent computing) – przetwarzanie oparte na współistnieniu wielu wątków lub procesów, operujących na współdzielonych danych. Wątki uruchomione na tym samym procesorze są przełączane w krótkich przedziałach czasu, co sprawia wrażenie, że wykonują się równolegle. W przypadku procesorów wielordzeniowych lub wielowątkowych, możliwe jest faktycznie współbieżne przetwarzanie. Tego rodzaju przetwarzanie jest też możliwe w architekturach wieloprocesorowych. W takiej sytuacji wydajność poszczególnych wątków zasadniczo nie jest degradowana przez inne wątki, z wyjątkiem sytuacji, kiedy wątki muszą rywalizować o wspólne zasoby, np. przepustowość magistral i urządzeń lub czas procesora, lub muszą synchronizować swoją pracę.

Przetwarzanie współbieżne znajduje szerokie zastosowanie w serwerach, które muszą obsługiwać liczne żądania od różnych klientów. Gdyby serwer działał sekwencyjnie, jedno duże żądanie sparaliżowałoby pracę serwera – pozostałe żądania czekałyby na swoją kolej, aż tamto zostanie ukończone. W architekturach jednowątkowych w celu zapobieżenia zatrzymaniu przetwarzania wątków przez duże zadanie, stosuje się technikę wywłaszczania i multitaskingu. W architekturach wieloprocesorowych lub z procesorami wielordzeniowymi i/lub wielowątkowymi, potrzeba multitaskingu jest dużo mniejsza, chyba że liczba wymagających wykonania wątków jest większa, niż liczba procesorów fizycznych lub wirtualnych w systemie.

Jednoczesna praca na współdzielonych danych może doprowadzić do utraty ich spójności, dlatego konieczne jest stosowanie różnych mechanizmów synchronizacyjnych, np. semaforów i monitorów. Niektóre języki programowania (np. Go, Erlang, Ada, Rust) powstały z myślą o tworzeniu systemów współbieżnych i zawierają silne wsparcie dla komunikacji lub synchronizacji wątków już na poziomie języka.

Zobacz też

edytuj

📚 Artikel Terkait di Wikipedia

Michał Władysław Sobolewski

service-driven computing, IGI Global, Hershey, pp 220-255 Sobolewski, M., (2015). Technology Foundations. In: J. Stjepandić et al. (eds.) Concurrent Engineering

Współbieżność (informatyka)

Handbook. McGraw Hill Professional, 1996. ISBN 978-0070730205. Parallel and Concurrent Programming in Haskell. O'Reilly Media, 2013. ISBN 978-1-4493-3592-2.

Lista skrótów i skrótowców używanych w informatyce

Unified Device Architecture CUPS – Common UNIX Printing System CVS – Concurrent Versions System DAC – Digital to Analog Converter DB – DataBase DBaaS

Problem wzajemnego wykluczania

High-Performance Java Platform Computing, Prentice Hall, ISBN 0-13-016164-0 Gadi Taubenfeld, Synchronization Algorithms and Concurrent Programming, Pearson/Prentice

Monitor (programowanie współbieżne)

Pera Brincha Hansena i zostały po raz pierwszy zaimplementowane w języku Concurrent Pascal. Klasa obsługująca konto bankowe: monitor class Account { private

Midori (system operacyjny)

wydanym przez Microsoft Research, CHESS: A systematic testing tool for concurrent software. Niektóre źródła uznały, że Midori może być przyszłym następcą