"Szia, Amigo! Az erőforrások megosztásáról szeretnék beszélni. Természetesen különböző szálakon keresztül.
"Folyamatosan azokról a problémákról beszélek, amelyek több szállal dolgozva, és azok megoldásáról beszélek. Ez nem jelenti azt, hogy a szálak használata rossz. A szálak nagyon hatékony eszközök. Valójában gyorsabbá és egyenletesebbé teszik a programot. megbízhatóbb. Minél összetettebb egy program, annál több szál és különböző független rész van benne."
"A program független (lazán összekapcsolt) részekre bontása nagyon előnyös."
"Képzeld el, hogy a programod belsőleg 100 szálra van felosztva. De csak kétmagos processzorod van. Ez azt jelenti, hogy átlagosan 50 szál kerül végrehajtásra minden magon."
"Ha növelni kell a program teljesítményét, vásároljon hozzá egy kétprocesszoros szervert és néhány édes processzort. Ezzel akár 32 magot is kaphat, ami 2-20-szoros teljesítménynövekedést eredményez. A számtól függően valóban független részekre oszlik."
"Ez az egyik oka annak, hogy a Java dominál a vállalati fejlesztésekben. Ha egy cégnek van egy komplex belső programja, amit 20 fejlesztő írt, akkor sokkal olcsóbb egy másik szervert vásárolni, mint a program teljesítményét optimalizálással megduplázni."
– Szóval erről van szó.
"De! Valahányszor egy fejlesztő úgy dönt, hogy másik szálat használ, megold egy problémát, és kettőt hoz létre. Egyre több szál nem fogja vég nélkül növelni a program teljesítményét."
"Először is, minden programnak van olyan munkája, amelyet nem lehet szétbontani és párhuzamosan futtatni különböző szálakon. Másodszor, az összes szál ugyanazon a processzoron fut. Minél több szál van, annál lassabban működik mindegyik."
"És ami a legfontosabb, a szálak gyakran ugyanazokat az objektumokat használják (általában "megosztott erőforrásoknak" nevezik)."
"Például egy szál egy fájlba akarja menteni az elvégzett munkáról szóló információkat. Ha több ilyen szál van, és ugyanabba a fájlba akarnak információkat írni, akkor zavarni fogják egymást. Megakadályozzák, hogy a fájl egy zagyva, a fájlhoz való hozzáférés korlátozott, azaz amíg az egyik szál használja a fájlt, a többiek várnak."
"Igen, emlékszem. Ezt a szinkronizált kulcsszóval csinálod ."
– Pontosan helyesen.
"És mi van akkor, ha a szálak más-más fájlba írnak?"
"Formailag ezek különböző objektumok, de valószínűleg ugyanazon a merevlemezen vannak."
"Szóval tényleg lehet párhuzamosítani valamit a processzoron belül?"
"Technikailag igen, de amint az Ön szálának szüksége van valamire a birtokában lévő adatokon kívül, azt a valamit már elfoglalhatja egy másik szál – és a szálnak várnia kell."
"Nos, akkor mit tegyek? Honnan tudhatom, hogy sok szálat kell-e csinálni vagy sem?"
"Ezt közvetlenül a program architektúrája határozza meg. Minden projektnek megvan a saját "építésze", aki ismeri a programban használt összes "erőforrást", ismeri azok korlátait, és azt, hogy mennyire jól/rosszul vannak párhuzamosítva."
– És ha nem tudom?
"Két lehetőség van:"
a) olyan személy felügyelete alatt dolgozzon, aki ezt teszi
b) kap néhány csomót kitalálni egyedül
"Robot vagyok: nem kapok csomókat, csak horpadásokat."
– Nos, akkor csinálj néhány horpadást.
– Értem. Köszönöm. Tisztáztál néhány dolgot, amelyeken már elkezdtem tűnődni.
GO TO FULL VERSION