Объединения (библиотека параллелизма) - Joins (concurrency library) - Wikipedia

Присоединяется асинхронный параллельные вычисления API (Шаблон соединения ) из Microsoft Research для .NET Framework. Он основан на присоединиться к исчислению и делает конструкции параллелизма язык доступен как Сборка CLI что любой CLI-совместимый язык можно использовать.

Обзор

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

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

общественный учебный класс ПрисоединитьсяДемо{    общественный только чтение Асинхронный.Канал<int> Очередь;    общественный только чтение Асинхронный.Канал<нить> послать;    общественный только чтение Синхронный<int>.Канал Забрать;     частный Присоединиться joinPattern = Присоединиться.Создавать();        общественный ПрисоединитьсяДемо()    {        joinPattern.Инициализировать(из Очередь);        joinPattern.Инициализировать(из послать);        joinPattern.Инициализировать(из Забрать);    }}

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

Шаблон синхронизации методов определяется присоединяется к шаблонам, который описывает, что происходит при вызове набора каналов. Например, что происходит, когда послать и Забрать называются вместе могут отличаться от послать и Очередь.

общественный пустота SetPatterns(){    присоединиться.Когда(послать).И(Забрать).Делать(s => s);    присоединиться.Когда(Очередь).И(Забрать).Делать(п => п.Нанизывать());    присоединиться.Когда(послать).И(Очередь).И(Забрать).Делать(s =>                                                 {                                                    послать(s);                                                    возвращаться Забрать();                                                });}

Рекомендации

внешняя ссылка