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] .
.HÁLÓ | |
---|---|
Megvalósítások | |
Építészet | |
Infrastruktúra |
|
Microsoft nyelvek | |
Más nyelvek | |
Windows alapok | |
Alkatrészek | |
Összehasonlítások |
|
Jövő technológiái | |
Információs források |