Mi a monitor, mutexek és szemafor ugyanaz vagy különböző dolgok verem túlcsordulás orosz

Csak mindenhol meg van írva a különböző módon. És nem tudom megérteni, hogy valójában utal, hogy minden egyes ilyen fogalmakat. Például, ugyanaz a Eckel van ilyen sor róla:

A probléma megoldása érdekében a versengés stream gyakorlatilag minden többszálas rendszer hozzáférés szinkronizálása megosztott erőforrások. Ez azt jelenti, hogy a hozzáférés a megosztott erőforrások egy időben kaphat csak egy szál. Leggyakrabban ez úgy történik egy darab kódot a zár rész, úgyhogy egyúttal át ezen a darab kód lehet csak egy szál. Mivel ez az a hatása, blokkolja a javaslat kölcsönös kizárás, ez a mechanizmus gyakran nevezik mutexek (kölcsönös kizárás).

Java beépített támogatást a konfliktus megelőzés formájában kulcsszó szinkronizálva. Ha egy szál kíván végrehajtani egy darab kód védi a szinkronizált szó, ellenőrzi, hogy a szemafor áll, hozzáfér a szemafor, végrehajtja a kódot, és elengedi a szemafor.

Magam is olvastam egy cikkben (és még mindig tart ez a megértés), hogy a mutex - ez egy olyan objektum, amely kapcsolatban áll az egyes objektumok a Java, és hogy lehet, hogy két államban: forgalmas és ingyenes. Ami pedig a monitor Ugyanebben a cikkben azt írták, hogy ez egy speciális mechanizmus (valójában - egy darab kódot), ami mutexek használatával szabályozza hozzáférést szálak egy bizonyos blokk-kód (azaz, ő a felelős a capture erőforrás szálak, és lehetővé teszi, hogy csak az egyik menet (amely megragadja a mutex) menni ezen, védett monitor, blokk-kód, illetve más szálak monitor nem teszi lehetővé, hogy ez a forrás, és ez a blokk a kódot, amikor a menet kilép a kódblokkot, a monitor elengedi a mutex, és lehetővé teszi más szálak be a Ebben a blokkban a kód). Ez a helyes megértése?

És pontosan képviseli ezeket a fogalmakat Java?

Általánosságban azt lehet feltételezni, hogy a mutex egy speciális esete a szemafor. Szemafor működik egyszerű - ez a fajta vetőmag - számláló. Minden alkalommal, amikor egy patak, hogy „megragadja” a szemafor, a szám eggyel csökken. Ha ez nulla vagy nullánál kisebb - a szemafor van zárva (vagyis durván szólva, a kód leáll a rögzítés pillanatában szemafor). Minden alkalommal, amikor a szemafor szabadul - ez a számláló. És ha ő akkor lenne nagyobb, mint nulla, akkor tetszőleges folyam, amely „lóg a felvétel a szemafor” jelet küld, hogy felébredjen, és képes lesz folytatni a munkát (persze, megint csak csökkenti az értéket a számláló).

A legnyilvánvalóbb példája a szemafor - egy letöltés menedzser - hozzátéve sok fájlt letölteni, de korlátozza a több egyidejű versenyeken.

hogy mutex - ez egy olyan objektum, amely kapcsolatban áll az egyes objektumok a Java, és hogy lehet, hogy két államban: forgalmas és ingyenes.

szinte közel áll az igazsághoz. Igen, a java az Object osztály egy mező típusát mutex. És az örökösök (vagyis minden más osztályokba) is kap egy személyes mutexek. ha a módszer lényege, hogy jelölje meg a szót szinkronizálva, akkor ez csak fonja a kihívás ebben mutexek. Azaz, ha az ok szinkronizált módszerek ugyanazt az objektumot a különböző adatfolyamok - mutexek nem teszi lehetővé számukra, hogy végre egy párhuzamos. De a különböző tárgyak (még az azonos típusú), akkor nem működik tovább.

Kapcsolódó cikkek