Concurrent vs Parallel (Konkurens vs Párhuzamos)

Nemrég olvastam egy blogot, Don't use Actors for concurrency, amiből kiderült, hogy vannak akik nem tudják (a blog írója), hogy mi a különbség a konkurens és a párhuzamos között.

Hoz egy példát, hogy miért nem jó az (Akka) actor a konkurenciára, amiben nincs is konkurencia, ha lenne benne, akkor viszont jó példa lenne arra, hogy miért is jó az actor a konkurenciára.

Mi is a konkurencia és miben különbözik a párhuzamosságtól?

Konkurenciáról akkor beszélünk, ha egy időintervallumban versengés van valamiért, több valami verseng egy valamiért. Pl. két tevékenység konkurensen hajtódik végre akkor, ha adott időintervallumban mind a kettő végrehajtódik (a két tevékenység verseng a végrehajtóért, vagyis azért, hogy a végrehajtó melyiket hajtja végre).
Párhuzamosságról akkor beszélünk, ha két tevékenysége egyszerre hajtódik végre.

Nagyon hasonlónak hangzik, de nem ugyanarról van szó, ezek függetlenek egymástól. Lehet:
- se nem konkurens és nem is párhuzamos,
- konkurens, de nem párhuzamos,
- párhuzamos, de nem konkurens,
- konkurens és párhuzamos egyszerre.

Az első esetre azt hiszem nem nehéz példát találni, pl. egyedül megiszok egy kólát.

Konkurens, de nem párhuzamos. Szeretnék megenni egy tortát és meginni egy kólát. Itt a torta evés tevékenység konkurál a kóla ivással. Ezt végre tudom úgy hajtani, hogy eszek egy kis tortát, majd iszok egy kis kólát, amíg el nem fogynak. Konkurensen hajtottam végre, mégsem párhuzamosan.

Párhuzamos, de nem konkurens. Szeretnék megenni egy tortát mialatt a feleségem megiszik egy kólát. Mialatt én megeszem a tortát, a feleségem megissza a kólát. Párhuzamosan hajtottuk végre és nem volt versengés.

Konkurens és párhuzamos egyszerre. Szeretnék megenni egy tortát és meginni egy kólát, miközben a felségem is eszik egy tortát és iszik egy kólát (a konkurens, de nem párhuzamos pontnál látott módon).

Az (Akka) actor mind a konkurens, mind a párhuzamos végrehajtásra nagyon jó!

Hozzászólások

+1
(+blogolj még sokat ezekről és ilyenekről :-))

Az utolsónál annyit, hogy a feleséged is ugyanazt a tortát és ugyanazt a kólát akarja enni és inni, ez fontos, hiszen megosztott erőforrásoknak kell lenniük.

Könnyű hibázni, mivel elég hasonló fogalmak, de ha megosztott erőforrásokról lenne szó, akkor szintén konkurens lenne és nem párhuzamos.

Tehát a feleségem és én is a saját tortánkat és kólánkat isszuk. Mindketten konkurensen végezzük a tevékenységünket, de ezek a tevékenységek nem versenyeznek egymással, így párhuzamosan futnak.

Szerk.: azt hiszem, hogy mégis csak igazad lehet, hogy akkor is egyszerre párhuzamos (hiszen kettő végrehajtó van) és konkurens. Mondom, hogy nehéz ügy ez :)

Igen, ráadásul ez a példa még annyival jobb is, mint az enyém, hogy itt ugyanaz a két tevékenység fut konkurensen illetve párhuzamosan.

Ráadásul azt is megmutatja, hogy mi van akkor, ha nincs jól kezelve a konkurencia.
Pl. ha egy villa van a tortához, akkor csak felváltva tudunk enni belőle, amikor én eszek, akkor várnia kell a feleségemnek (itt jól van kezelve). Ha viszont két villa van a tortához, akkor egyszerre is tudunk enni és olyankor időnként előfordulhat, hogy ugyanazt a részt szeretnénk megenni, összeakadnak a villák és vagy egyikünk villáján nem lesz semmi, vagy semelyikünkén sem, esetleg csak egy rész falat kerül fel (itt nincs /jól/ kezelve).

Szép bejegyzés. Ha írsz még hasonlót, biztos el fogom olvasni. ;)