Párhuzamosság és koordinációs futásidő

A Concurrency and Coordination Runtime (CCR) a Microsoft .NET-keretrendszerén alapuló párhuzamos és aszinkron adatfolyamokkal való munkavégzésre szolgáló könyvtár, amely a Microsoft Robotics Developer Studio (MS RDS) részét képezi. Annak ellenére, hogy ez a könyvtár MS RDS-sel érkezik, hatóköre nem korlátozódik a robotika viselkedésének modellezésére, hanem bármely alkalmazás aszinkronizálására is használható.

A robotok szoftverlogikájának – a hagyományos alkalmazásokkal ellentétben – egy kiszámíthatatlan környezettel kell kölcsönhatásba lépnie, és helyesen kell reagálnia a sok érzékelőtől egyidejűleg érkező információkra. Számos okból célszerű a logika jelentős részét átvinni egy egymással kölcsönhatásban lévő számítógépek halmazára, amelyek fizikailag mind a roboton, mind azon kívül elhelyezkedhetnek. Ehhez olyan megközelítésre van szükség, amely egyformán alkalmas párhuzamos és elosztott alkalmazásokhoz. A Concurrency & Coordination Runtime könyvtárat kifejezetten arra tervezték, hogy megkönnyítse a párhuzamos végrehajtáshoz szükséges kódírást és a jó skálázást a modern többmagos processzorokon.

A „miért van szükségünk a CCR-re” kérdés megválaszolásához emlékezzünk vissza az „alkalmazás” fogalmának meghatározására a Robotics Studio kontextusában: ez egy párhuzamosan futó, lazán csatolt komponensek összetétele. Ez a megközelítés megvalósítható a meglévő többszálú programozási primitívek felhasználásával. A többszálú alkalmazások írásának folyamata azonban korántsem egyszerű feladat, és az egyidejűleg futó szálak számának növekedésével egyre nehezebbé válik.

A CCR használatakor nem kell manuálisan kezelni a szálakat, zárakat, szemaforokat, vagyis az összes szabványos szálszinkronizációs primitívet. A CCR nem csak segédprogramok halmaza, hanem egy teljesen más megközelítés a kódíráshoz. Üzenetsorokon és adatfüggő szinkronizálási primitívek halmazán alapul. A szálak teljesen el vannak rejtve a programozó elől, és a Runtime , az adatoktól és a szükséges helytől függően dönti el, hogy melyik kód és hol kerül végrehajtásra. Mivel a szinkronizálás adatokon alapul, tilos az osztott memóriát használni, mert ez teljesen megzavarhatja a kód működési sémáját.

A CCR könyvtár megkönnyíti a számos párhuzamos és aszinkron adatfolyammal működő programok írását. A szenzoroktól származó információk, azok feldolgozása és a robotok mozgásvezérlése példaként szolgálhat az adatfolyamokra [1] .

A CCR könyvtár tartalmaz egy osztályt Dispatcher, amely egy szálfűző csomagot valósít meg fix számú szálal , amelyek mindegyike futhat egyidejűleg. Minden diszpécser egy sor (úgynevezett DispatcherQueue) küldötteket tartalmaz, amelyek egy aszinkron módon végrehajtható eljárás (más néven munkaelem vagy művelet) belépési pontját jelentik . A műveletek a szálakhoz kerülnek végrehajtásra. A diszpécser objektum is tartalmaz egy generikust Port , amely egy sor, amelybe a művelet aszinkron végrehajtásának eredménye kerül. Minden művelet társítható egy objektumhoz ReceiverTask, amely az eredményt további feldolgozáshoz használja. Arbiterkezeli a beérkezett feladatokat ReceiverTask, és felhívja őket, amikor a várt eredmény készen áll és sorba áll Port.

2008 októberében a CCR könyvtár külön termékként vált elérhetővé a CCR és DSS Toolkit 2008 nevű Decentralized Software Services eszközzel együtt [2] .

Lásd még

Linkek

  1. Microsoft Robotics Studio – robotika mindenkinek . Letöltve: 2011. február 8. Archiválva az eredetiből: 2010. december 25.
  2. Megjelent a CCR és a DSS Toolkit 2008 . Hozzáférés dátuma: 2009. október 28. Az eredetiből archiválva : 2010. január 4..

További források