Jaka jest różnica między współbieżnością a równoległością?

Jaka jest różnica między współbieżnością a równoległością?

Przykłady są doceniane.

Author: nbro, 2009-06-26

30 answers

Współbieżność jest wtedy, gdy dwa lub więcej zadań może się rozpocząć, uruchomić i zakończyć w nakładających się okresach. Nie musi to oznaczać, że obie będą działać w tym samym momencie. Na przykład wielozadaniowość na maszynie jednordzeniowej.

Równoległość jest wtedy, gdy zadania dosłownie działają w tym samym czasie, np. na procesorze wielordzeniowym.


Cytowanie Sun ' s Programowanie wielowątkowe Przewodnik:

  • Współbieżność: warunek, który istnieje, gdy co najmniej dwa wątki czynią postępy. Bardziej uogólniona forma równoległości, która może obejmować wycinanie czasu jako formę Wirtualnego równoległościanu.

  • Paralelizm: warunek, który powstaje, gdy co najmniej dwa wątki są wykonywane jednocześnie.

 958
Author: RichieHindle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-16 18:06:48

Dlaczego istnieje zamieszanie

Istnieje zamieszanie, ponieważ słownikowe znaczenia obu tych słów są prawie takie same:

  • Concurrent : existing, happening, or done at the same time(dictionary.com)
  • Parallel : bardzo podobne i często występujące w tym samym czasie (merriam webster).
Jednak sposób ich wykorzystania w informatyce i programowaniu jest zupełnie inny. Oto moja interpretacja:
  • współbieżność : Przerywalność
  • Paralelizm : Niezależność

Więc co mam na myśli przez powyższe definicje?

Wyjaśnię za pomocą analogii z prawdziwego świata. Załóżmy, że musisz wykonać 2 bardzo ważne zadania w jeden dzień:

  1. Zdobądź paszport
  2. zrób prezentację
Problem w tym, że zadanie 1 wymaga, abyś udał się do niezwykle biurokratycznego biura rządowego, które sprawia, że czekasz 4 godziny w kolejce, aby dostać swój paszport. Tymczasem Zadanie-2 jest wymagane przez twoje biuro i jest to zadanie krytyczne. Oba muszą być ukończone w określonym dniu.

Przypadek 1: Wykonanie Sekwencyjne

Zazwyczaj będziesz jechał do biura paszportowego przez 2 godziny, czekał w kolejce przez 4 godziny, wykonywał zadanie, wracał dwie godziny, wracał do domu, trzymał się z dala jeszcze 5 godzin i robił prezentację.

Przypadek 2: Współbieżne Wykonanie

Ale jesteś mądra. Planuj z wyprzedzeniem. Nosisz ze sobą laptopa, a podczas czekając w kolejce, zaczynasz pracować nad prezentacją. W ten sposób, po powrocie do domu, wystarczy pracować 1 dodatkową godzinę zamiast 5.

W tym przypadku, oba zadania są wykonywane przez Ciebie, tylko w kawałkach. Przerwałeś zadanie paszportowe czekając w kolejce i pracowałeś nad prezentacją. Kiedy Twój numer został wywołany, przerwałeś zadanie prezentacji i przełączyłeś na zadanie paszportowe. Oszczędność czasu była zasadniczo możliwa dzięki przerywalności obu zadań.

Współbieżność, IMO, powinna być traktowana jako "izolacja" w kwasowych właściwościach bazy danych. Dwie transakcje bazodanowe spełniają wymóg izolacji, jeśli wykonujesz transakcje podrzędne w każdy z nich w dowolny sposób, a końcowy wynik jest taki sam, jak gdyby oba zadania zostały wykonane seryjnie. Pamiętaj, że zarówno do zadań paszportowych, jak i prezentacji, jesteś jedynym egzekutorem.

Przypadek 3: Równoległe Wykonanie

Skoro jesteś takim mądrym facetem, jesteś oczywiście wyżej i masz asystenta. Tak więc, zanim wyjdziesz, aby rozpocząć zadanie paszportowe, zadzwoń do niego i powiedz, aby przygotował pierwszy szkic prezentacji. Spędzasz cały dzień i kończysz zadanie paszportowe, wracasz i widzisz swoje maile, i znajdujesz szkic prezentacji. Wykonał całkiem solidną robotę i z kilkoma edycjami w ciągu 2 godzin, sfinalizujesz ją. Ponieważ twój asystent jest tak samo mądry jak ty, był w stanie pracować nad nim niezależnie, bez potrzeby aby stale prosić Cię o wyjaśnienia. Tak więc, ze względu na niezależność zadań, były one wykonywane w tym samym czasie przez dwóch różnych katów.

nadal ze mną? W porządku...

Przypadek 4: Równoległe, Ale Nie Równoległe

Pamiętasz zadanie paszportowe, w którym musisz czekać w kolejce? Ponieważ jest totwój paszport, Twój asystent nie może czekać w kolejce do ciebie. Tak więc zadanie paszportowe ma przerywalność (można zatrzymać to podczas oczekiwania w kolejce, i wznowić go później, gdy numer jest wywołany), ale nie niezależne (Twój asystent nie może czekać w Twoim miejscu).

Przypadek 5: Równoległy, Ale Nie Równoległy

Załóżmy, że biuro rządowe ma kontrolę bezpieczeństwa, aby wejść na teren. Tutaj musisz usunąć wszystkie urządzenia elektroniczne i przekazać je funkcjonariuszom, a oni zwracają twoje urządzenia dopiero po wykonaniu zadania.

W tym przypadku zadanie paszportowe nie jest ani niezależny ani przerywany . Nawet jeśli czekasz w kolejce, nie możesz pracować na czymś innym, ponieważ nie masz niezbędnego sprzętu.

Podobnie, powiedzmy, że prezentacja jest tak wysoce matematyczna, że wymaga 100% koncentracji przez co najmniej 5 godzin. Nie możesz tego zrobić, czekając w kolejce do zadania paszportowego, nawet jeśli masz ze sobą laptopa.

W tym przypadku zadanie prezentacji jest niezależne (albo ty lub Twój asystent możesz włożyć 5 godzin skoncentrowanego wysiłku), ale nie przerywalne.

Przypadek 6: równoległe i równoległe wykonanie

Teraz powiedzmy, że oprócz przypisania asystenta do prezentacji, nosisz ze sobą również laptopa do zadania paszportowego. Podczas oczekiwania w kolejce widać, że asystent stworzył pierwsze 10 slajdów we wspólnej talii. Wysyłasz komentarze do jego pracy z pewnymi poprawkami. Później, po powrocie do domu, zamiast 2 godzin aby sfinalizować projekt, potrzebujesz tylko 15 minut.

Było to możliwe, ponieważ zadanie prezentacji ma niezależność (każdy z Was może to zrobić) i przerywalność (możesz je zatrzymać i wznowić później). Tak więc wykonywałeś jednocześnie oba zadania i wykonałeś zadanie prezentacji równolegle.

Powiedzmy, że oprócz bycia zbyt biurokratycznym, Biuro rządowe jest skorumpowane. W ten sposób możesz pokazać swój identyfikator, wprowadzić go, zacznij czekać w kolejce, aż Twój numer zostanie wywołany, przekupić strażnika i kogoś innego, aby utrzymać swoją pozycję w kolejce, wymknąć się, wrócić, zanim twój numer zostanie wywołany, i wznowić czekanie samodzielnie.

W tym przypadku można wykonywać zarówno zadania paszportowe, jak i prezentacyjne jednocześnie i równolegle. Możesz się wymknąć, a twoja pozycja jest utrzymywana przez asystenta. Oboje możecie pracować nad prezentacją itp.


Powrót do Informatyka

W informatyce świat, oto przykładowe scenariusze typowe dla każdego z tych przypadków:

  • Przypadek 1: przerywanie przetwarzania.
  • Przypadek 2: gdy jest tylko jeden procesor, ale wszystkie wykonujące zadania mają czas oczekiwania ze względu na I/O.
  • Przypadek 3: często spotykany, gdy mówimy o map-reduce lub hadoop clusters.
  • przypadek 4: myślę, że przypadek 4 jest rzadkością. Rzadko zdarza się, aby zadanie było równoległe, ale nie równoległe. Ale to może się zdarzyć. Na przykład, Załóżmy, że Twoje zadanie wymaga dostępu do specjalnego układu obliczeniowego, do którego można uzyskać dostęp tylko przez procesor-1. Tak więc, nawet jeśli procesor-2 jest wolny, a procesor-1 wykonuje jakieś inne zadanie, specjalne zadanie obliczeniowe nie może kontynuować na procesorze-2.
  • przypadek 5: również rzadki, ale nie tak rzadki jak przypadek 4. Kod niezrzeszony może być krytycznym regionem chronionym przez muteksy. Po uruchomieniu, musi wykonać do zakończenia. Jednak dwa różne krytyczne regiony mogą działać jednocześnie na dwóch różnych procesorach.
  • Case 6: IMO, większość dyskusji na temat programowania równoległego lub współbieżnego w zasadzie mówi o Przypadku 6. Jest to mieszanka i dopasowanie zarówno równoległych, jak i równoległych egzekucji.

Concurrency and Go

Jeśli widzisz, dlaczego Rob Pike mówi, że współbieżność jest lepsza, musisz zrozumieć, że powodem jest. Masz naprawdę długie zadanie, w którym jest wiele okresów oczekiwania, w których czekasz w przypadku niektórych operacji zewnętrznych, takich jak odczyt plików, pobieranie sieciowe. W swoim wykładzie mówi tylko: "po prostu przerwij to długie sekwencyjne zadanie, abyś mógł zrobić coś użytecznego, czekając."Dlatego mówi o różnych organizacjach z różnymi susłami.

Teraz Siła Go pochodzi z ułatwiania tego łamania za pomocą go słów kluczowych i kanałów. Ponadto, istnieje doskonałe podstawowe wsparcie w uruchomieniu, aby zaplanować te goroutines.

Ale zasadniczo jest współbieżność lepsza niż równoległość?

Czy jabłka są bardziej preferowane niż pomarańcze?
 259
Author: Methos,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-01 17:52:45

Podoba mi się wypowiedź Roba Pike ' a: współbieżność to nie paralelizm (jest lepsza!) (slajdy) (talk)

Rob zwykle mówi o Go i zazwyczaj rozwiązuje kwestię współbieżności vs równoległości w wizualnym i intuicyjnym wyjaśnieniu! Oto krótkie podsumowanie:

Zadanie: spalmy stos przestarzałych podręczników językowych! Po kolei!

Zadanie

Współbieżność: istnieje wiele jednocześnie rozkładów zadania! Jeden przykład:

Susły

Paralelizm: poprzednia konfiguracja występuje równolegle, jeśli w tym samym czasie pracują co najmniej 2 susły.

 219
Author: asfer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-11 17:44:52

Aby dodać do tego, co powiedzieli inni:

Współbieżność jest jak żongler żonglujący wieloma piłkami. Niezależnie od tego, jak się wydaje, żongler łapie/rzuca tylko jedną piłkę na rękę na raz. Równoległość polega na tym, że wielu żonglerów żongluje piłkami jednocześnie.

 119
Author: Thomas T,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-17 07:23:59

Powiedzmy, że masz program, który ma dwa wątki. Program może działać na dwa sposoby:

Concurrency                 Concurrency + parallelism
(Single-Core CPU)           (Multi-Core CPU)
 ___                         ___ ___
|th1|                       |th1|th2|
|   |                       |   |___|
|___|___                    |   |___
    |th2|                   |___|th2|
 ___|___|                    ___|___|
|th1|                       |th1|
|___|___                    |   |___
    |th2|                   |   |th2|

W obu przypadkach mamy współbieżność z samego faktu, że mamy więcej niż jeden wątek uruchomiony.

Gdybyśmy uruchomili ten program na komputerze z pojedynczym rdzeniem procesora, SYSTEM OPERACYJNY przełączałby się między dwoma wątkami, umożliwiając uruchamianie jednego wątku na raz.

Gdybyśmy uruchomili ten program na komputerze z wielordzeniowym procesorem, Moglibyśmy uruchomić dwa wątki w równolegle - obok siebie w tym samym czasie.

 86
Author: Pithikos,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-11 22:55:16

Współbieżność: Jeśli jeden procesor rozwiązuje dwa lub więcej problemów. alt text

Paralelizm: Jeśli jeden problem jest rozwiązany przez wiele procesorów.

alt text

 36
Author: Rajendra Uppal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-14 07:12:41

Postaram się wyjaśnić ciekawym i łatwym do zrozumienia przykładem. :)

Załóżmy, że organizacja organizuje turniej szachowy, w którym 10 graczy (z równymi umiejętnościami gry w szachy) zmierzy się z zawodowym mistrzem szachistą. A ponieważ szachy są 1:1, dlatego organizatorzy muszą przeprowadzić 10 partii w sposób efektywny czas, aby mogli zakończyć całe wydarzenie tak szybko, jak to możliwe.

Mam nadzieję, że następujące scenariusze będą łatwe opisz wiele sposobów prowadzenia tych 10 gier:

1) SERIAL - powiedzmy, że profesjonalista gra z każdą osobą jeden po drugim, tzn. rozpoczyna i kończy grę z jedną osobą, a następnie rozpoczyna następną grę z następną osobą i tak dalej. Innymi słowy, postanowili przeprowadzić rozgrywki kolejno. Więc jeśli jedna gra trwa 10 minut, to 10 gier zajmie 100 minut, Załóżmy również, że przejście z jednej gry do drugiej trwa 6 sekund, a następnie dla 10 gier będzie to 54 sekundy (ok. 1 min).

Więc całe wydarzenie zakończy się w przybliżeniu w ciągu 101 minut (najgorsze podejście )

2) CONCURRENT - powiedzmy, że profesjonalny gra swoją turę i przechodzi do następnego gracza, więc wszyscy gracze 10 grają jednocześnie, ale profesjonalny gracz nie jest z dwiema osobami na raz, gra swoją turę i przechodzi do następnej osoby. Teraz Załóżmy, profesjonalny gracz zajmuje 6 sek, aby odtworzyć swoją kolej, a także czas przejścia profesjonalnego gracza b / w dwóch graczy jest 6 sek więc całkowity czas przejścia, aby wrócić do pierwszego gracza będzie 1min (10x6sec). Dlatego, zanim wróci do pierwszej osoby, z którą event został rozpoczęty, minęły 2 minuty (10xtime_per_turn_by_champion + 10xtransition_time=2mins)

Zakładając, że wszyscy gracze biorą 45 sekund, aby ukończyć turę, więc na podstawie 10 minut na grę od zdarzenia seryjnego nie. liczba rund przed zakończeniem gry powinna wynosić 600 / (45+6) = 11 rund (w przybliżeniu)

Więc całe wydarzenie zakończy się w przybliżeniu w 11xtime_per_turn_by_player_&_champion + 11xtransition_time_across_10_players = 11x51 + 11x60sec= 561 + 660 = 1221sec = 20.35 mins (w przybliżeniu)

Zobacz poprawę z 101 min do 20,35 min (lepsze podejście )

3) PARALLEL - powiedzmy, że organizatorzy dostają dodatkowe fundusze i dlatego zdecydowali się zaprosić dwóch profesjonalnych mistrzów (obaj jednakowo zdolni) i podzielili zestaw tych samych 10 zawodników (pretendentów) w dwie grupy po 5 Każda i przydzielili im dwóch mistrzów, czyli po jednej grupie. W tych dwóch setach rozgrywka przebiega równolegle, tzn. co najmniej dwóch graczy (po jednym w każdej grupie) gra przeciwko dwóm zawodnikom z danej grupy.

Jednak w grupie profesjonalny gracz z jednym graczem na raz (tj. kolejno), więc bez żadnych obliczeń można łatwo wywnioskować, że całe wydarzenie zakończy się w przybliżeniu w 101/2=50.5 min do zakończenia

Zobacz poprawę od 101 min do 50.5 min (dobre podejście )

4) CONCURRENT + PARALLEL - w powyższym scenariuszu, powiedzmy, że dwóch graczy mistrz będzie grać jednocześnie (Czytaj 2. punkt) z 5 graczami w swoich grupach, więc teraz gry w różnych grupach biegną równolegle, ale w ramach grupy biegną jednocześnie.

Więc gry w jednej grupie zakończą się w przybliżeniu za 11xtime_per_turn_by_player_&_champion + 11xtransition_time_across_5_players = 11x51 + 11x30 = 600 + 330 = 930sec = 15.5 min (w przybliżeniu)

Więc całe wydarzenie (z udziałem dwóch takich równoległych grup biegowych) zakończy się w przybliżeniu w 15.5 min

Zobacz poprawę z 101 min do 15,5 min ( najlepsze podejście )

Uwaga: w powyższym scenariuszu, jeśli zamienisz 10 graczy na 10 podobnych zadań i dwóch profesjonalnych graczy z dwoma rdzeniami procesora, następujące kolejność pozostanie prawdziwa:

SERIAL > PARALLEL > CONCURRENT > CONCURRENT+PARALLEL

(uwaga: kolejność ta może ulec zmianie w przypadku innych scenariuszy, ponieważ kolejność ta w dużym stopniu zależy od współzależności zadań, potrzeb komunikacyjnych b / w jobs i kosztów przejściowych b / w jobs)

 27
Author: sactiw,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-22 12:23:33

Konkurencja: wiele przepływów realizacji z możliwością współdzielenia zasobów

Ex: dwa wątki konkurujące o port We/Wy.

Paralelizm: dzielenie problemu na wiele podobnych kawałków.

Ex: analizowanie dużego pliku poprzez uruchomienie dwóch procesów na każdej połowie pliku.

 25
Author: Mihai Toader,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-07 16:17:26

Rozwiązują różne problemy. Współbieżność rozwiązuje problem posiadania ograniczonych zasobów procesora i wielu zadań. Tak więc tworzysz wątki lub niezależne ścieżki wykonania za pomocą kodu, aby dzielić czas na rzadkim zasobie. Do niedawna współbieżność dominowała w dyskusji ze względu na dostępność procesora.

Równoległość rozwiązuje problem znalezienia wystarczającej ilości zadań i odpowiednich zadań (tych, które można prawidłowo rozdzielić) i rozłożenia ich na wiele procesorów zasoby. Paralelizm zawsze był oczywiście, ale zbliża się do przodu, ponieważ procesory wielordzeniowe są tak tanie.

 22
Author: JP Alioto,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-26 17:36:19

Prosty przykład:

Współbieżne to: "dwie kolejki dostępu do jednego bankomatu"

Równoległe to: "dwie kolejki i dwa bankomaty"

 21
Author: Saurabh Pakhare,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-28 03:29:43

Wyobraź sobie naukę nowego języka programowania, oglądając samouczek wideo. Musisz wstrzymać wideo, zastosować to, co zostało powiedziane w kodzie, a następnie kontynuować oglądanie. to jest współbieżność.

Teraz jesteś profesjonalnym programistą. I lubisz słuchać spokojnej muzyki podczas kodowania. To paralelizm.

Enjoy.

 11
Author: Ramy Mohamed,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-17 20:22:18

Pomyśl o tym jak o kolejkach obsługi, w których serwer może obsługiwać tylko pierwsze zadanie w kolejce.

1 Serwer , 1 Kolejka zadań (z 5 zadaniami) -> brak współbieżności, brak równoległości (tylko jedno zadanie jest serwisowane do zakończenia, następne zadanie w kolejce musi poczekać do wykonania zadania i nie ma innego serwera do jego obsługi)

1 Serwer, 2 lub więcej różnych kolejek (z 5 zadaniami w kolejce) - > współbieżność (ponieważ serwer dzieli czas ze wszystkimi 1. zadaniami w kolejkach, jednakowo lub ważony), nadal nie ma paralelizmu, ponieważ w każdej chwili jest jedna i jedyna praca serwisowana.

2 lub więcej serwerów, jedna kolejka - > paralelizm (2 zadania wykonane w tym samym momencie), ale bez współbieżności (serwer nie dzieli czasu, 3 zadanie musi poczekać aż jeden z serwerów się zakończy.)

2 lub więcej serwerów, 2 lub więcej różnych kolejek - > współbieżność i równoległość

Innymi słowy, współbieżność to dzielenie czasu na wykonanie zadania, może zająć ten sam czas jego praca, ale przynajmniej zaczyna się wcześnie. Ważne jest to, że zadania mogą być podzielone na mniejsze zadania, co pozwala na przeplatanie.

Równoległość jest osiągana dzięki większej liczbie procesorów, serwerów, osób itp., które działają równolegle.

Należy pamiętać, że jeśli zasoby są współdzielone, nie można osiągnąć czystej równoległości, ale to jest miejsce, w którym współbieżność miałaby najlepsze praktyczne zastosowanie, podejmując inne zadanie, które nie potrzebuje tego zasobu.

 8
Author: Rahul,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-10 21:03:03

Współbieżność = > gdy wiele zadań jest wykonywanych w nakładających się okresach czasu ze współdzielonymi zasobami (potencjalnie maksymalizując wykorzystanie zasobów).

Parallel = > gdy pojedyncze zadanie jest podzielone na wiele prostych niezależnych podzadań, które mogą być wykonywane jednocześnie.

 7
Author: MBK,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-24 22:04:20

Zaproponuję odpowiedź, która trochę koliduje z niektórymi popularnymi odpowiedziami tutaj. Moim zdaniem współbieżność jest ogólnym terminem obejmującym paralelizm. współbieżność ma zastosowanie do każdej sytuacji, w której poszczególne zadania lub jednostki pracy nakładają się na siebie w czasie. paralelizm odnosi się dokładniej do sytuacji, w których poszczególne jednostki pracy są oceniane/wykonywane w tym samym czasie fizycznym. Raison d ' etre równoległości jest przyspieszenie oprogramowania, które może korzystać z wiele fizycznych zasobów obliczeniowych. Inną ważną koncepcją, która pasuje do współbieżności, jest interaktywność. interaktywność ma zastosowanie, gdy nakładanie się zadań jest możliwe do zaobserwowania ze świata zewnętrznego. Raison d ' etre interaktywności jest tworzenie oprogramowania, które jest responsywne dla rzeczywistych podmiotów, takich jak użytkownicy, rówieśników sieciowych, urządzeń peryferyjnych itp.

Równoległość i interaktywność są prawie całkowicie niezależnymi wymiarami współbieżności. Dla poszczególnych projektodawców może obchodzić jedno i drugie. Mają tendencję do konfuzji, nie tylko dlatego, że obrzydliwość, która jest wątkami, daje dość wygodny prymityw do zrobienia obu.

Trochę więcej szczegółów o paralelizmie :

Równoległość występuje w bardzo małych skalach (np. równoległość na poziomie instrukcji w procesorach), średnich skalach (np. procesory wielordzeniowe) i dużych skalach (np. klastry obliczeniowe o wysokiej wydajności). Presja na twórców oprogramowania, aby ujawnili więcej równoległość na poziomie wątków wzrosła w ostatnich latach z powodu rozwoju procesorów wielordzeniowych. Paralelizm jest ściśle związany z pojęciem zależności. Zależności ograniczają zakres, w jakim można osiągnąć równoległość; dwa zadania nie mogą być wykonywane równolegle, jeśli jedno zależy od drugiego (ignorując spekulacje).

Istnieje wiele wzorców i frameworków, których programiści używają do wyrażania równoległości: potoki, pule zadań, operacje agregujące na danych struktury ("tablice równoległe").

Trochę więcej szczegółów na temat interaktywności :

Najbardziej podstawowym i powszechnym sposobem na interaktywność są zdarzenia (np. pętla zdarzeń i procedury obsługi / wywołań zwrotnych). W przypadku prostych zadań zdarzenia są świetne. Próba wykonywania bardziej złożonych zadań z eventami dostaje się do zgrywania stosu (Alias callback hell; Alias control inversion). Kiedy masz dość wydarzeń, Możesz spróbować bardziej egzotycznych rzeczy, takich jak generatory, coroutines (Alias Async / wait) lub nici spółdzielcze.

Z miłości do niezawodnego oprogramowania, nie używaj wątków, jeśli chodzi o interaktywność.

Curmudgeonliness

Nie podoba mi się hasło Roba Pike ' a "współbieżność to nie paralelizm, to lepiej". Współbieżność nie jest ani lepsza, ani gorsza od równoległości. Współbieżność obejmuje interaktywność, której nie można porównać w lepszy/gorszy sposób z równoległością. To tak, jakby powiedzieć "przepływ kontroli jest lepszy niż dane".

 6
Author: Ben Ylvisaker,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-26 20:33:29

W elektronice szeregowe i równoległe reprezentują rodzaj topologii statycznej, określającej rzeczywiste zachowanie obwodu. Gdy nie ma współbieżności, paralelizm jest deterministyczny .

Aby opisać dynamiczne, zjawiska związane z czasem , używamy terminów sekwencyjny i równoległy. Na przykład, pewien wynik można uzyskać za pomocą pewnej sekwencji zadań (np. przepis). Kiedy z kimś rozmawiamy, my wytwarzają sekwencję słów. Jednak w rzeczywistości wiele innych procesów zachodzi w tym samym momencie, a zatem zgadzają się z faktycznym wynikiem określonego działania. Jeśli Wiele osób mówi w tym samym czasie, równoczesne rozmowy mogą zakłócać naszą sekwencję, ale wyniki tej ingerencji nie są znane z góry. współbieżność wprowadza nieokreśloność .

Szeregowa / równoległa i Sekwencyjna/współbieżna charakterystyka są ortogonalne. Przykładem tego jest w komunikacja cyfrowa. W adapterze szeregowym wiadomość cyfrowa jest tymczasowo (tj. kolejno ) rozprowadzana wzdłuż tej samej linii komunikacyjnej (np. jeden przewód). W adapterze równoległym dzielony jest on również na równoległe linie komunikacyjne (np. wiele przewodów), a następnie zrekonstruowany na końcu odbiorczym.

Wyobraźmy sobie grę z dziewięciorgiem dzieci. Jeśli pozbędziemy się ich jako łańcucha, damy wiadomość na początku i otrzymamy ją na końcu, będziemy mieli szereg komunikacja. Więcej słów komponuje wiadomość, składając się z sekwencji jedności komunikacyjnych.
I like ice-cream so much. > X > X > X > X > X > X > X > X > X > ....

Jest to proces sekwencyjny odtworzony na infrastrukturze szeregowej .

Teraz Podzielmy dzieci na grupy po 3 osoby. Dzielimy zdanie na trzy części, pierwszą dajemy dziecku linii po naszej lewej, drugą dziecku linii środkowej itp.
I like ice-cream so much. > I like    > X > X > X > .... > ....
                          > ice-cream > X > X > X > ....
                          > so much   > X > X > X > ....

Jest to sekwencyjny proces odtworzony na równoległy Infrastruktura (nadal częściowo serializowana).

W obu przypadkach, przypuśćmy, że istnieje doskonała komunikacja między dziećmi, wynik jest z góry określony .

Jeśli są inne osoby, które rozmawiają z pierwszym dzieckiem w tym samym czasie co ty, wtedy będziemy mieli równoległe procesy . Nie wiemy, który proces będzie rozpatrywany przez infrastrukturę, więc ostateczny wynik jest nieokreślony z góry.

 5
Author: s1l3n0,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-27 09:17:02

Współbieżność jest uogólnioną formą paralelizmu. Na przykład program równoległy może być również nazywany współbieżnym, ale odwrotność nie jest prawdą.

  1. Wykonywanie współbieżne jest możliwe na jednym procesorze (wielu wątkach, zarządzanych przez scheduler lub Thread-pool)

  2. Wykonywanie równoległe nie jest możliwe na pojedynczym procesorze, ale na wielu procesorach. (Jeden proces na procesor)

  3. Rozproszone przetwarzanie jest również tematem pokrewnym i można go również nazwać przetwarzanie równoległe, ale odwrotne nie jest prawdą, podobnie jak równoległość.

Aby dowiedzieć się więcej przeczytaj ten artykuł koncepcje programowania współbieżnego

 4
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-23 17:33:18

Bardzo lubię Paula Butchera ODPOWIEDŹ na to pytanie (jest autorem siedmiu modeli w siedem tygodni):

Choć często są mylone, paralelizm i współbieżność są różne rzeczy. współbieżność jest aspektem domeny problemowej - twój kod musi obsługiwać wiele jednoczesnych (lub blisko jednoczesnych) wydarzenia . równoległość jest natomiast aspektem rozwiązania domena - chcesz zrobić swoją program działa szybciej przez przetwarzanie różne części problemu równolegle. niektóre podejścia są stosuje się do współbieżności, niektóre do równoległości, a niektóre do obu. Zrozumieć, z czym masz do czynienia i wybrać odpowiednie narzędzie do praca.

 3
Author: dangom,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-02 11:30:35

Bardzo podobała mi się ta graficzna reprezentacja z innej odpowiedzi - myślę, że odpowiada na pytanie znacznie lepiej niż wiele powyższych odpowiedzi

Paralelizm a współbieżność Gdy dwa wątki działają równolegle, oba działają w tym samym czasie. Na przykład, jeśli mamy dwa wątki, A i B, to ich równoległe wykonanie wyglądałoby tak:

CPU 1: A ------------------------->

CPU 2: B ------------------------->

Gdy dwa wątki działają jednocześnie, ich wykonanie pokrywa się. Nakładanie się może nastąpić na dwa sposoby: albo wątki są wykonywane w tym samym czasie (tj. równolegle, jak powyżej), albo ich wykonania są przeplatane na procesorze, w ten sposób:

CPU 1: A -----------> B ----------> A -----------> B ---------->

Tak więc, dla naszych celów, równoległość może być traktowana jako szczególny przypadek współbieżności

Źródło: kolejna odpowiedź tutaj

Mam nadzieję, że pomaga.

 3
Author: HopeKing,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-03 13:14:16

Równoległość to jednoczesne wykonywanie procesów na multiple cores per CPU LUB multiple CPUs (on a single motherboard).

Współbieżność jest wtedy, gdy równoległość jest osiągana na single core CPU za pomocą algorytmów szeregowania, które dzielą czas procesora (time-slice). Procesy są przeplatane .

Jednostki:

    1 lub wiele rdzeni w procesorze (prawie wszystkie współczesne procesory)
  • 1 lub wiele procesorów na płycie głównej (myśl old school serwery)
  • 1 program może mieć 1 lub wiele wątków wykonania
  • 1 proces może mieć 1 lub wiele wątków z 1 Programu (np. wykonanie serii Fibonacciego dla bardzo dużej liczby)
  • 1 program może mieć 1 lub wiele procesów (każde okno przeglądarki Chrome jest procesem)
  • 1 Proces to thread(s)+allocated memory by OS (sterta, rejestry, stos, Klasa pamięć)
 3
Author: nabster,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-24 13:55:47

Współbieżność może obejmować zadania uruchamiane jednocześnie lub nie (mogą być uruchamiane w oddzielnych procesorach/rdzeniach, ale mogą być również uruchamiane w "kleszczach"). Co jest ważne jest to, że współbieżność zawsze odnosi się do wykonywania jednego większego zadania. Więc zasadniczo jest to część niektórych obliczeń. Musisz być mądry, co możesz robić jednocześnie, a czego nie i jak synchronizować.

Paralelizm oznacza, że robisz tylko kilka rzeczy jednocześnie. Nie muszą brać udziału w rozwiązywaniu jednego problemu. Twoje wątki mogą na przykład rozwiązać jeden problem. Oczywiście synchronizacja również ma zastosowanie, ale z innej perspektywy.

 2
Author: kboom,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-17 17:58:50

Równoległość: Posiadanie wielu wątków wykonuje podobne zadania, które są niezależne od siebie pod względem danych i zasobów, których potrzebują do tego. Np: Google crawler może spawn tysiące wątków i każdy wątek może zrobić to zadanie niezależnie.

Współbieżność: Współbieżność pojawia się, gdy udostępniasz dane, współdzielony zasób między wątkami. W systemie transakcyjnym oznacza to, że musisz zsynchronizować krytyczną część kodu za pomocą techniki takie jak zamki, semafory itp.

 2
Author: Sudip Bhandari,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-20 09:29:16

"współbieżność" jest wtedy, gdy jest wiele rzeczy w toku.

"paralelizm" jest wtedy, gdy rzeczy współbieżne postępują w tym samym czasie.


Przykłady współbieżności bez paralelizmu:

  • wiele wątków na jednym rdzeniu.
  • wiele wiadomości w kolejce komunikatów Win32.
  • wielokrotność SqlDataReaders na połączeniu Marsa .
  • wiele skryptów JavaScript obiecuje w przeglądarce tab.

Należy jednak zauważyć, że różnica między współbieżnością a równoległością jest często kwestią perspektywy. Powyższe przykłady nie są równoległe z punktu widzenia (obserwowalnych efektów) wykonywania kodu. Ale istnieje równoległość na poziomie instrukcji nawet w obrębie jednego rdzenia. Istnieją elementy sprzętowe robiące rzeczy równolegle z procesorem, a następnie przerywające procesor po zakończeniu. GPU może rysować na ekranie podczas procedury okna lub obsługi zdarzenia egzekucja. DBMS może przemierzać drzewa B dla następnego zapytania, podczas gdy ty wciąż pobierasz wyniki poprzedniego. Przeglądarka może wykonywać układ lub sieć podczas wykonywania Promise.resolve(). Itd, itp...

No i proszę. Świat jest jak zawsze brudny;)
 2
Author: Branko Dimitrijevic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-08 03:25:23

Programowanie współbieżne dotyczy operacji, które wydają się nakładać i dotyczy przede wszystkim złożoności wynikającej z niedeterministycznego przepływu sterowania. Koszty ilościowe związane z programami współbieżnymi są zazwyczaj zarówno przepustowością, jak i opóźnieniami. Programy współbieżne są często powiązane z IO, ale nie zawsze, np. współbieżne Garbage collectors są całkowicie na CPU. Pedagogicznym przykładem programu współbieżnego jest Web crawler. Program ten inicjuje zapytania o WWW strony i akceptuje odpowiedzi jednocześnie, gdy wyniki pobierania stają się dostępne, gromadząc zestaw stron, które zostały już odwiedzone. Przepływ sterowania nie jest deterministyczny, ponieważ odpowiedzi niekoniecznie są odbierane w tej samej kolejności za każdym razem, gdy program jest uruchamiany. Ta cecha może bardzo utrudnić debugowanie programów współbieżnych. Niektóre aplikacje są zasadniczo równoległe, np. Serwery WWW muszą obsługiwać połączenia klientów jednocześnie. Erlang jest chyba najbardziej obiecujący nadchodzący język dla programowania wysoce współbieżnego.

Programowanie równoległe dotyczy operacji, które nakładają się na siebie w celu poprawy przepustowości. Trudności w programowaniu współbieżnym są unikane przez deterministyczny przepływ sterowania. Zazwyczaj programy odradzają zestawy zadań potomnych, które działają równolegle, a zadanie nadrzędne jest kontynuowane tylko po zakończeniu każdej podzadania. To sprawia, że programy równoległe są znacznie łatwiejsze do debugowania. The hard part of parallel programowanie to optymalizacja wydajności w odniesieniu do kwestii takich jak ziarnistość i komunikacja. Ten ostatni jest nadal problemem w kontekście multicores, ponieważ istnieje znaczny koszt związany z transferem danych z jednej pamięci podręcznej do drugiej. Gęsta macierz-mnożenie macierzy jest Pedagogicznym przykładem programowania równoległego i może być skutecznie rozwiązane za pomocą algorytmu straasena divide-and-conquer i atakowanie podzadań równolegle. Cilk jest chyba najbardziej obiecującym język do wysokowydajnego programowania równoległego na komputerach z pamięcią współdzieloną (w tym wielordzeniowych).

Skopiowane z mojej odpowiedzi: https://stackoverflow.com/a/3982782

 2
Author: Jon Harrop,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-06 01:26:29

Świetnie, pozwól mi wziąć scenariusz, aby pokazać, co rozumiem. przypuśćmy, że jest troje dzieci o imionach: A, B, C. A i B mówią, C słuchają. Dla A i B są równoległe: Odp: jestem A. B: jestem B.

Ale dla C, jego mózg musi wziąć proces równoległy, aby słuchać A i B, to może: I am I A am B.

 1
Author: mannnnerd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-17 02:42:23

Concurrency simple oznacza, że działa więcej niż jedno zadanie (nie jest konieczne równolegle). Na przykład załóżmy, że mamy 3 zadania wtedy w dowolnym momencie czasu: więcej niż jedno może być uruchomione lub wszystkie mogą być uruchomione w tym samym czasie.

Równoległość oznacza, że dosłownie biegną równolegle. Więc w takim przypadku wszystkie trzy muszą działać w tym samym czasie.

 0
Author: i_am_zero,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-15 11:53:15

Pojęcie "współbieżności" Pike ' a jest zamierzoną decyzją projektową i wdrożeniową. Konstrukcja programu zdolnego do współbieżności może, ale nie musi, wykazywać "równoległość" behawioralną; zależy to od środowiska uruchomieniowego.

Nie chcesz, aby równoległość była pokazywana przez program, który nie został zaprojektowany do współbieżności. :- ) Ale do tego stopnia, że jest to zysk netto dla istotnych czynników (zużycie energii, wydajność, itp.), chcesz mieć maksymalnie współbieżny projekt, aby system hosta mógł równoległe jego wykonanie, jeśli to możliwe.

Język programowania Go Pike ' a ilustruje to w skrajności: jego funkcje to wszystkie wątki, które mogą działać poprawnie jednocześnie, tzn. wywołanie funkcji zawsze tworzy wątek, który będzie działał równolegle z wywołującym, jeśli system jest do tego zdolny. Aplikacja z setkami, a nawet tysiącami wątków jest zupełnie zwyczajna w jego świecie. (Nie jestem ekspertem od Go, to tylko moje podejście do tego.)

 0
Author: bgat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-10 14:37:39

Wyjaśnienie z to źródło było dla mnie pomocne:

Współbieżność jest związana z tym, jak aplikacja obsługuje wiele zadań działa. Aplikacja może przetwarzać jedno zadanie w czasie (sekwencyjnie) lub pracować nad wieloma zadaniami jednocześnie (jednocześnie).

Równoległość z drugiej strony, jest związana z tym, jak aplikacja obsługuje każde indywidualne zadanie. Aplikacja może przetworzyć zadanie seryjnie od początku do końca, lub podzielić zadanie na podzadania, które może być uzupełniany równolegle.

Jak widać, aplikacja może być równoległa, ale nie równoległa. Oznacza to, że przetwarza więcej niż jedno zadanie w tym samym czasie, ale zadania nie są podzielone na podzadania.

Aplikacja może być również równoległa, ale nie równoległa. Oznacza to że aplikacja działa tylko na jednym zadaniu na raz, a to zadanie jest podzielony na podzadania, które mogą być przetwarzane równolegle.

, aplikacja nie może być ani równoległa, ani równoległa. Oznacza to, że działa tylko na jednym zadaniu na raz, a zadanie jest nigdy nie dzielone na podzadania dla równoległego wykonywania.

Wreszcie, aplikacja może być zarówno równoległa jak i równoległa, w że działa zarówno na wielu zadaniach jednocześnie, jak i łamie każde zadanie w dół do podzadań do równoległego wykonywania. Jednak niektóre z korzyści płynące z współbieżności i równoległości mogą zostać utracone w tym scenariusz, jako Procesory w komputerze są już dość zajęte tylko przy współbieżności lub paralelizmie. Łączenie go może prowadzić do tylko niewielki przyrost wydajności lub nawet utrata wydajności.

 0
Author: Boolean_Type,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-19 11:37:09

Najprostszym i najbardziej eleganckim sposobem zrozumienia tych dwóch moim zdaniem jest to. Współbieżność pozwala na przeplatanie wykonania, dzięki czemu może dać iluzję równoległości. Oznacza to, że współbieżny system może uruchamiać wideo z Youtube wraz z zapisywaniem dokumentu w programie Word, na przykład. Bazowy SYSTEM OPERACYJNY, będący systemem współbieżnym, umożliwia tym zadaniom przeplatanie ich wykonania. Ponieważ komputery wykonują instrukcje tak szybko, daje to wrażenie wykonywania dwóch rzeczy na raz.

Równoległość jest wtedy, gdy takie rzeczy naprawdę równolegle. W powyższym przykładzie może się okazać, że kod przetwarzania wideo jest wykonywany na jednym rdzeniu, a aplikacja Word jest uruchomiona na innym. Zauważ, że oznacza to, że program współbieżny może być również równoległy! Strukturyzacja aplikacji za pomocą wątków i procesów umożliwia programowi wykorzystanie podstawowego sprzętu i potencjalnie może być wykonywana równolegle.

Why not have everything be równolegle? Jednym z powodów jest fakt, że współbieżność jest sposobem strukturyzowania programów i jest decyzją projektową ułatwiającą rozdzielenie problemów, podczas gdy równoległość jest często używana w nazwie wydajności. Innym jest to, że pewnych rzeczy zasadniczo nie można w pełni robić równolegle. Przykładem może być dodanie dwóch rzeczy z tyłu kolejki - nie można wstawiać obu jednocześnie. Coś musi iść pierwsze, a drugie za nim, albo zepsujesz kolejkę. Chociaż my można przeplatać takie wykonanie (a więc otrzymujemy kolejkę współbieżną), nie można mieć jej równolegle.

Mam nadzieję, że to pomoże!

 0
Author: Daniel Soutar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-17 00:54:22

(dziwi mnie, że tak fundamentalne pytanie nie jest rozwiązywane poprawnie i starannie przez lata...)

W skrócie, zarówno współbieżność, jak i równoległość są właściwościami computing .

Jako różnica, oto Wyjaśnienie od Roberta Harpera :

Pierwszą rzeczą do zrozumienia jest równoległość nie ma nic wspólnego z współbieżnością . Współbieżność dotyczy nieeterministycznego składu programów (lub ich komponenty). Paralelizm dotyczy asymptotycznej wydajności programów o deterministycznym zachowaniu . Współbieżność polega na zarządzaniu nie do opanowania: zdarzenia docierają z przyczyn niezależnych od nas i musimy na nie reagować. Użytkownik kliknie myszką, menedżer okien musi odpowiedzieć, mimo że wyświetlacz wymaga uwagi. Takie sytuacje są z natury nieeterministyczne, ale stosujemy również pro forma nondeterminizm w ustawieniu deterministycznym przez udawanie, że komponenty sygnalizują zdarzenia w dowolnej kolejności i że musimy na nie reagować w miarę ich powstawania. Nieeterministyczna kompozycja jest potężną ideą strukturyzującą program. Paralelizm, z drugiej strony, dotyczy zależności między subkomputacjami obliczeń deterministycznych. Wynik nie ulega wątpliwości, ale istnieje wiele sposobów, aby go osiągnąć, niektóre bardziej skuteczne niż inne. Chcemy wykorzystać te możliwości na naszą korzyść.

Mogą być sortowane o właściwościach ortogonalnych w programach. Przeczytaj ten wpis na blogu , aby uzyskać dodatkowe ilustracje. I ten omówił nieco więcej na temat różnic o komponentach w programowaniu , Jak wątki.

Zauważ, że threading lub wielozadaniowość to wszystkie implementacje komputerów służące bardziej konkretnym celom. Mogą być związane z równoległością i współbieżnością, ale nie w istotny sposób. Tak więc nie są to dobre wpisy, aby rozpocząć Wyjaśnienie.

Jeszcze jeden highlight: (fizyczny)" czas " nie ma prawie nic wspólnego z omawianymi tutaj właściwościami. Czas jest tylko sposobem realizacji pomiaru, aby pokazać znaczenie właściwości, ale daleko od istoty. W złożoności czasowej - która jest mniej lub bardziej podobna, nawet pomiar jest często bardziej znaczący w tym przypadku.

 0
Author: FrankHB,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-09 05:09:39

Wystarczy zapoznać się ze słownikiem, widać, że współbieżność (z łaciny) oznacza biegać razem, zbiegać się, zgadzać; ergo istnieje potrzeba synchronizacji, ponieważ istnieje konkurencja na tych samych zasobach. Parallel (z greckiego) oznacza duplikat na boku; ergo robić to samo w tym samym czasie.

 -4
Author: rocket441,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-19 02:30:42