четверг, 4 июня 2009 г.

Пару слов о библиотеке асинхронных агентов от Microsoft

В новой версии Visual C++ 2010 будет содержаться нативная библиотека для работы с агентами. Давно пытался на нее посмотреть плотнее, но все не получалось. Совсем недавно в MSDN Magazine была опубликована статья Solving The Dining Philosophers Problem With Asynchronous Agents, в которой данная библиотека рассматривается на примере реализации задачи обедающих философов.

Курил я эту статью долго. Перечитывал раза четыре, как минимум. Сначала долго въезжал в то, что же там описано. Потом долго решал, что же я могу об это всем сказать… Сказать могу, как оказалось, немного. Либо статья плохая, либо пример выбран неудачно, либо сама библиотека того…

В общем, у меня сложилось впечатление, что новая библиотека асинхронных агентов от MS – это очень хороший способ писать “спагетти код”: создается куча каналов, эти каналы как-то прослушиваются кучей агентов, кто-то что-то кому-то отсылает, что-то на каких-то контекстах запускается. Разбираться в этом потом – мало не покажется. Но, повторюсь, может быть это из-за того, что автор статьи написал какое-то уж очень хитрое решение.

Кстати, оказалось, что еще и код примеров очень трудно читать из-за использованного в нем стиля именования. То классы с большой буквы называются, то публичные члены классов, то методы классов, то пространства имен. Плюс еще объемные лямбды загромождают код ненужными низкоуровневыми подробностями. Павбывавбы.

Тем не менее, было интересно посмотреть, как возможности C++0x позволяют записывать действия агентов в виде лямбда функций. Нужно обязательно поиметь это в виду для SObjectizer 5.

Комментариев нет: