A párhuzamos programozás alapjai
Azt a szerepet, amit az alapprogram játszott az eddigiek során, mostantól az itt bemutatásra kerülő parhuzamosalappr program veszi át, amely a korábbi, párhuzamos, biztonságos megfelelője.
Ebben a programban példát mutatunk a védett egység használatára, amely a szemafor egy magasabb szintű nyelvi megfelelője, és a kölcsönös kizárás teljesülését biztosítja a benne foglalt eljárásokra, és entrykre. A védett egység lehetővé teszi a benne található függvények párhuzamos, és több szálon egy időben történő futtatását. (Ezért fontos, hogy a függvények mellékhatás-mentesek legyenek!) A védett egység privát részében helyezhetjük majd el a „védeni kívánt dolgokat”.
Azzal a döntéssel, hogy a párhuzamos programozással fogunk foglalkozni, sok szemléletbeli váltás jár. A keletkező futtatható fájl minden alkalommal, amikor elindítjuk, más és más „eredményt” adhat, még akkor is, ha ezt nem is látjuk. Például előfordulhat, hogy a programban található utasítások más sorrendben történő végrehajtásának eredményeképpen keletkezett többször ugyanaz a kimenet (vagy hatás). Ez jelentősen megnehezíti a tesztelést, így a tervezésnek még fontosabb szerep jut.
Szeretnénk bíztatni az olvasót, hogy úgy is gondoljon az itt bemutatott lehetőségekre, mint az enkapszuláció egy igen erős eszközére, amely - a használatából eredő nehézségek mellett - még nagyobb kifejezőerőt, szabadságot hatékonyságot tesz lehetővé. Ezentúl a szorosan összetartozó programrészeket már külön kisebb programokba is elhelyezhetjük…
parhuzamosalappr.adb
FONTOS megjegyzések:
Ha a kiírás nem védett egységben lenne, és több szál egyszerre próbálna kiírni a konzolba, akkor a kiírandó szövegek összekeveredhetnének. (Az ilyen jellegű hibák nehezen derülnek ki amikor csak szimuláljuk a párhuzamos működést.)
Ha nem ismerjük egy program pontos működését, akkor tanulmányozzuk a referenciakönyvet, és az ajánlott irodalmakat! Ez sok tapasztalatot ad majd, amit nem lehet más módon pótolni.