Hirdetés

Új hozzászólás Aktív témák

  • Tin

    veterán

    válasz #54625216 #562 üzenetére

    Egyszerűen nem hoz annyit, amennyi melóba kerül átírni.

    Ami alapból párhuzamosan megy, azok a szerver oldali komponensek. Ott sok hívás van, amik mind külön szálon futnak, az oprendszer párhuzamosít, jól kihasználja az erőforrásokat, és optimálisan működik a dolog. Gyakorlatilag az adatbáziskezeléstől kezdve egymillió dolog van, ami így működik, és jól működik. Itt a fejlesztőnek csak a közös erőforrások párhuzamos kezelésével kell foglalkoznia, a szálak nyugodtan lehetnek szekvenciálisak, úgyis egymás mellett futnak.

    Ami még jól párhuzamosítható, azok a hosszú lefutású, egymás mellett, de főképp javarészt egymástól függetlenül futtatható dolgok. Pl. egy képet szétdobhatsz 8 részre, és feldolgozhatod szálanként a nyolcadat, egy játékban számolhatod külön a hátteret és az előteret, vagy a következő X frame-et, egy nagyobb műveletet szétbonthatsz részegységekre, ha azok nem egymásra épülnek, és számolhatod azt.

    De a programok logikájának nagy része egymásra épül. Ritka az, amikor megnyomsz egy programban egy gombot, és mondjuk erre fel kell dolgoznia egy adatsort, ezzel párhuzamosan egy másodikat és egy harmadikat, majd az első három eredményen elvégezni egy negyedik feldolgozást. A legtöbbször sorban végzel el műveleteket az adatokon, és az eredmények egymásra épülnek, ezt pedig nem igazán lehet párhuzamosítani. Van, amit igen, de ott sem biztos, hogy nyersz vele, mert egyszerűen sokkal tovább tart párhuzamosítani valamit, ami az esetek 18%-ában, bizonyos lefutások esetén mehet egymás mellett, ezzel nyersz 30%-nyi feldolgozási időt, de beleölsz mondjuk 50 embernapot, de a gyakorlatban nyersz vele 1 mp futási időt. Egyszerűen nincs értelme.

    Az igazán számításigényes feladatokat, a nagy terhelést adó műveleteket már rég párhuzamosították. Tudom, a játékok között van, ami csak 4 magot használt eddig, de az új engine-ek már akármennyire skálázódnak, és kész.

    A párhuzamos programozás nem olyan, hogy "legyen párhuzamos", ott olyan problémák jönnek elő, amikhez tök más gondolkozásmód kell, pl. közös erőforrások egyszerre történő használata, részfeladatoknál egymás bevárása, szálak összefogása, stb. Ezek jó dolgok, de amíg ekkora fejlesztői hiány van és ilyen szinten fejlődnek a hardverek, ez egyszerűen értelmetlen, leszámítva a szervertermékeket és a valódi, nagy célközönségnek szóló alkalmazásokat, de ott meg már megcsinálták.

Új hozzászólás Aktív témák