Интернет магазин китайских планшетных компьютеров



Компьютеры - Joins (библиотека)

24 февраля 2011


Оглавление:
1. Joins (библиотека)
2. Недостатки



Joins — асинхронный API для параллельных вычислений, разработанный Microsoft Research для .NET Framework. Библиотека основана на соединительном исчислении и делает конструкции параллелизма языка Cω доступными в качестве .NET-сборки любому языку с поддержкой CLI.

Обзор

Joins может быть использована для описания параллелизма в приложении, использующем шаблоны joins, что подходит как для многопоточных приложений, так и распределённых приложений, основанных на событиях. API библиотеки Joins эмулирует декларативное типобезопасное описание шаблонов синхронизации.

Библиотека Joins эмулирует асинхронные и синхронные методы. Асинхронный метод, с точки зрения Cω и Joins, это метод, который не блокирует вызвавший его метод и не возвращает ему результатов своей работы, тогда как синхронный метод блокирует вызвавший его метод. В API Joins синхронные и асинхронные методы реализованы как обобщённые делегаты. Использование обощений гарантирует безопасность типов. Например, можно создать набор из синхронных и асинхронных методов и использовать их для создания объекта, реализующего шаблон:

 public class JoinDemo
 {
    public readonly Asynchronous.Channel<int> Queue;
    public readonly Asynchronous.Channel<string> Send;
    public readonly Synchronous<int>.Channel Retrieve; 
    private Join joinPattern = Join.create;
 
    public JoinDemo
    {
        joinPattern.Initialize;
        joinPattern.Initialize;
        joinPattern.Initialize;
    }
 }

При вызове асинхронных методов параметры передаются в канал, представляющий собой очередь, управляемую средой исполнения Joins. Помимо этого, метод может запустить новый поток для обработки параметров в качестве фоновой задачи и вернуть результаты. При вызове соответствующего синхронного метода параметр возвращается для дальнейшей обработки. Если при вызове синхронного метода в очереди нет ни одного параметра, то вызывающий ждёт. Среда исполнения Joins планирует возврат параметра исходя из его готовности.

Синхронизирующий шаблон методов определяется joins-шаблонами, которые описывают, что произойдет при задействовании набора каналов. Например, что произойдет когда Send и Retrieve будут вызваны вместе, а что — при вызове Send и Queue.

 public void SetPatterns
 {
    join.When.And.Do
                                     {
                                          return s;
                                     });
    join.When.And.Do
                                     {
                                          return n.ToString;
                                     });
    join.When.And.And.Do
                                     {
                                          Send;
                                          return Retrieve;
                                     };
 }


Просмотров: 1599


<<<