Concurrency and Coordination Runtime (CCR) je knihovna pro práci s paralelními a asynchronními datovými toky založenými na .NET Framework od společnosti Microsoft , která je součástí sady Microsoft Robotics Developer Studio (MS RDS). Navzdory skutečnosti, že tato knihovna je dodávána s MS RDS, její rozsah není omezen na modelování chování robotiky, ale lze ji použít i ke zlepšení asynchronnosti v libovolné aplikaci.
Softwarová logika robota – na rozdíl od tradičních aplikací – musí interagovat s nepředvídatelným prostředím a správně reagovat na informace přicházející současně z více senzorů. Z mnoha důvodů má smysl přenést podstatnou část logiky na sadu vzájemně interagujících počítačů, které mohou být fyzicky umístěny jak na robotu, tak mimo něj. To vyžaduje přístup, který je stejně dobře vhodný pro paralelní i distribuované aplikace. Knihovna Concurrency & Coordination Runtime byla speciálně navržena tak, aby usnadnila psaní kódu pro paralelní provádění a dobré škálování na moderních vícejádrových procesorech.
Abychom odpověděli na otázku „proč potřebujeme CCR“, připomeňme definici pojmu „aplikace“ v kontextu Robotics Studia: jde o kompozici volně svázaných paralelně běžících komponent. Tento přístup by mohl být implementován pomocí existujících vícevláknových programovacích primitiv. Proces psaní vícevláknových aplikací však zdaleka není snadný úkol a s rostoucím počtem souběžně běžících vláken je stále obtížnější.
Při použití CCR nemusíte ručně spravovat vlákna, zámky, semafory, tedy všechna standardní primitiva synchronizace vláken. CCR není jen sada utilit, je to úplně jiný přístup k psaní kódu. Je založen na frontách zpráv a sadě datově závislých synchronizačních primitiv. Vlákna jsou programátorovi zcela skryta a Runtime v závislosti na datech a na tom, kde jsou potřeba, rozhoduje o tom, který kód a kde bude spuštěn. Vzhledem k tomu, že synchronizace je založena na datech, je zakázáno používat sdílenou paměť, protože to může zcela narušit schéma fungování kódu.
Knihovna CCR usnadňuje psaní programů, které pracují s mnoha paralelními a asynchronními datovými toky. Jako příklady datových toků mohou sloužit informace ze senzorů, jejich zpracování a řízení pohybu v robotech [1] .
Knihovna CCR obsahuje třídu Dispatcher, která implementuje sadu vláken s pevným počtem vláken , z nichž všechny mohou běžet souběžně. Každý dispečer obsahuje frontu (nazývanou DispatcherQueue) delegátů , kteří představují vstupní bod do procedury (nazývané také pracovní položka nebo operace), kterou lze provádět asynchronně. Operace jsou předány vláknům k provedení. Objekt dispečer obsahuje také generic Port , což je fronta, do které je umístěn výsledek asynchronního provedení operace. Každá operace může být spojena s objektem ReceiverTask, který používá výsledek pro další zpracování. Arbiterspravuje přijaté úkoly ReceiverTaska volá je, když je výsledek, na který čekají, připraven a zařazen do fronty Port.
V říjnu 2008 byla knihovna CCR k dispozici jako samostatný produkt spolu s nástrojem decentralizovaných softwarových služeb nazvaným CCR a DSS Toolkit 2008 [2] .
.SÍŤ | |
---|---|
Implementace | |
Architektura | |
Infrastruktura | |
jazyky Microsoft | |
Jiné jazyky | |
Základy Windows | |
Komponenty | |
Srovnání |
|
Budoucí technologie | |
Informační zdroje |