Joins (библиотека)

Joins (библиотека)

Joins — асинхронный API для параллельных вычислений, разработанный Microsoft Research для .NET Framework. Библиотека основана на соединительном исчислении и делает конструкции параллелизма языка доступными в качестве .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(out Queue);
        joinPattern.Initialize(out Send);
        joinPattern.Initialize(out Retrieve);
    }
 }

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

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

 public void SetPatterns()
 {
    join.When(Send).And(Retrieve).Do(delegate (string s)
                                     {
                                          return s;
                                     });
    join.When(Queue).And(Retrieve).Do(delegate (int n)
                                     {
                                          return n.ToString();
                                     });
    join.When(Send).And(Queue).And(Retrieve).Do(delegate (string s)
                                     {
                                          Send(s);
                                          return Retrieve();
                                     };
 }

Недостатки

Главным недостатком библиотеки Joins является скорость, поэтому, например, в Cω предусмотрено больше возможностей для оптимизации за счет статического подхода[1].

Примечания

Ссылки


Wikimedia Foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Полезное


Смотреть что такое "Joins (библиотека)" в других словарях:

  • Join — может относится к: Join (SQL) операция языка SQL и реляционных баз данных join (Unix) команда операционной системы Unix Joins (библиотека) API параллельных вычислений, разработанный Microsoft Research Joins.com веб сайт южнокорейской газеты… …   Википедия

  • JavaScript — Не следует путать с Java. JavaScript Класс языка: мультипарадигменный …   Википедия

  • Concurrency and Coordination Runtime — (CCR)  библиотека для работы с параллельными и асинхронными потоками данных, базирующаяся на .NET Framework от Microsoft, поставляемая в комплекте с Microsoft Robotics Developer Studio (MS RDS). Несмотря на то что данная библиотека… …   Википедия

  • Принстонский университет — По английски Princeton University …   Википедия

  • Винни-Пух — У этого термина существуют и другие значения, см. Винни Пух (значения). Винни Пух Winnie the Pooh …   Википедия

  • Университет Дьюка — Университет Дьюка …   Википедия

  • Chrono (серия игр) — Chrono Логотип серии Жанр Консольные ролевые игры Разработчики …   Википедия

  • Винни Пух — Кадр из советского мультфильма Винни Пух (англ. Winnie the Pooh) плюшевый мишка, персонаж повестей и стихов Алана Александра Милна (цикл не имеет общего названия и обычно тоже называется «Винни Пух», по первой книге). Один из самых известных… …   Википедия

  • Foreign relations of North Korea — North Korea This article is part of the series: Politics and government of North Korea Constitution Juche …   Wikipedia

  • The Doomed City — ( ru. Град обреченный) is a 1975 science fiction novel by Arkady and Boris Strugatsky, which is widely considered among the most philosophical of their novels. The name originates from a work by Nicholas Roerich which astonished [the authors] a… …   Wikipedia


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»