Евгений Марченков Эксперт по технологиями разработки ПО Microsoft Microsoft TechDays http://www.techdays.ru Это набор продуктов и сервисов для простого создания приложений для роботов на большом кол-ве разнообразных устройств Microsoft Robotics Developer Studio 2008 RoboChamps www.robochamps.com Microsoft TechDays http://www.techdays.ru Runtime environment Выполнение приложений для роботов, отслеживание и взаимодействие с другими приложениями для роботов Visual Programming Language (VPL) Язык визуального программирования для написания приложений для роботов Simulation environment Выполнение приложения для роботов в симулируемых условиях Microsoft TechDays http://www.techdays.ru Decentralized System Services (DSS) Модель распределенного приложения Простая, гибкая и сервис-ориентированная Совместима с существующей Web инфраструктурой Concurrency & Coordination Runtime (CCR) Библиотека для работы с параллельными и асинхронными потоками данных Фокус на координацию сообщений Скрывает традиционные потоки и примитивы блокировки Microsoft TechDays http://www.techdays.ru Bumper 2 (Sensor) Motor Message Box (Actuator) Orchestrator Infrared detector (Sensor) Bumper 1 (Sensor) Motor Приложение – это композиция слабосвязанных параллельно выполняющихся компонент Microsoft TechDays http://www.techdays.ru Асинхронная модель программирования Модель параллельного программирования без ручного управления потоками, блокировками, семафорами и т.д. Основана на асинхронных сообщениях Фокус на координации примитивов Последовательное выполнение, но без блокировки потоков, без нужды в callback-ах Контекст исполнения для сервисов Изоляция от инфраструктуры Изоляция от других сервисов Microsoft TechDays http://www.techdays.ru Port FIFO Service Handlers Port содержит: State Очередь (FIFO) содержащую значения определенного типа Может иметь до 16 очередей различных типов данных Очередь получателей, которые могут быть запущены по прибытии сообщения и выполнении определенных условий Получатель представлен в виде C# делегата Делегат может быть как именованным, так и анонимным Сообщения Сообщения посылаются на определенный порт сервиса Port<int> myPort = new Port<int>() ; myPort.Post (42) ; Arbiter Реализует общие конструкции параллелизма, такие как join, choice, interleave Простыми словами: «По нашим указаниям решает, что где и как должно обрабатываться» Microsoft TechDays http://www.techdays.ru Dispatcher Это пул потоков Можно иметь в своем приложении несколько Dispatcher'ов Если не иметь вообще ни одного, тогда будет автоматически задействован "встроенный" ThreadPool (Default pool). DispatcherQueue Это просто очередь «Привязывается» к пулу потоков ("встроенному" или созданному). Можно иметь несколько таких очередей Microsoft TechDays http://www.techdays.ru Handler 1 Port1 Arbiter Port2 Handler 2 Handler 3 Receive (Arbiter.Receive) Все приходящие в порт данные вызывают заданный обработчик Choice (Arbiter.Choice) В зависимости от типа данных в порту вызывается тот или иной обработчик Join (Arbiter.JoinedReceive) Обработчик вызывается только когда одновременно есть данные в обоих портах Dynamic Join (Arbiter.MultipleItemReceive) Обработчик вызывается тогда, когда в порту скапливается заданное количество данных Microsoft TechDays http://www.techdays.ru Описание: Есть метод UpdateUserStatistics, который часто вызывается в цикле и долго выполняется. Необходимо распараллелить цикл. Решение: static void Main(string[] args) { using (Dispatcher disp = new Dispatcher(2, "Main Pool")) { DispatcherQueue queue = new DispatcherQueue("Main Queue", disp); Port<User> userPort = new Port<User>(); Arbiter.Activate(queue, Arbiter.Receive<User>(true, userPort, UpdateUserStatistics)); foreach (User user in GetUsersForUpdate()) { userPort.Post(user); } } } Microsoft TechDays http://www.techdays.ru Выполняется на двухядерном компьютере Microsoft TechDays http://www.techdays.ru Написание программ для роботов Для синхронизации параллельных и асинхронных потоков данных MySpaces Часть BackEnd инфраструктуры Microsoft TechDays http://www.techdays.ru Сайт http://www.microsoft.com/robotics Newsgroup http://msdn.microsoft.com/robotics/ Wiki http://channel9.msdn.com/wiki/default.aspx/Ch annel9.MSRoboticsStudio Microsoft TechDays http://www.techdays.ru © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION. Microsoft TechDays http://www.techdays.ru