SCOOP (программное обеспечение) - SCOOP (software)

SCOOP (Простое параллельное объектно-ориентированное программирование) - это модель параллелизма, разработанная для Язык программирования Eiffel, задуманный создателем и дизайнером Эйфеля, Бертран Мейер.

SCOOP определяет способ написания объектно-ориентированной программы без концепции потоков, блокировок или других типичных мультипрограммирование методы. Это позволяет компилятору или среде выполнения оптимизировать степень параллелизма, а также устранить типичные недостатки конструкции, такие как тупик.

Модель была впервые разработана в начале 1990-х и опубликована в 1993 году в Коммуникации ACM[1] Обновленная версия описана в главе 30 книги. Построение объектно-ориентированного программного обеспечения.[2] В 1995 году Eiffel Software разработала прототип реализации. Статья Комптона и Уокера[3] предоставляет обзор SCOOP и описывает еще одну раннюю реализацию. Ниеналтовски, Арслан и Мейер опубликовали описание модели по состоянию на 2003 год.[4] Работа над SCOOP продолжалась на кафедре программной инженерии ETH Цюрих.[5] SCOOP стал доступен как стандартная часть EiffelStudio в начале 2011 года.[6]

Технический обзор

SCOOP работает, позволяя ссылаться на определенные объекты как отдельный. В приведенном ниже коде сущность local_inventory объявлен как отдельный тип, указав ключевое слово языка Eiffel отдельный в декларации.

    local_inventory: отдельный ИНВЕНТАРЬ

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

Помимо концепции обособленности, SCOOP использует принципы дизайн по контракту как часть стратегии SCOOP по синхронизации доступа к разделяемым отдельным ресурсам. Например, предварительное условие для потребителя, желающего получить доступ к элементу из приведенного выше примера инвентаризации, может оказаться, что такой элемент в настоящее время существует. Это было бы выражено в контракте на особенности класса. ИНВЕНТАРЬ который возвращает элемент.

    элемент: ТОВАР        - Текущий элемент    требовать        inventory_has_item: has_item

При традиционной последовательной обработке клиент, намеревающийся позвонить local_inventory.item будет нести ответственность за обеспечение того, чтобы предварительное условие local_inventory.has_item удерживает перед вызовом. Если звонок элемент были сделаны в состоянии, в котором has_item не выполняется, вызывающий вызовет исключение нарушения предварительного условия.

При наличии SCOOP и с учетом обособленности local_inventory, делая чек на has_item перед звонком элемент не будет надежным. Это потому, что состояние local_inventory могли быть изменены запросами от других процессоров SCOOP между временем, когда была произведена проверка, и временем, когда элемент можно было бы назвать.

В результате, когда SCOOP включен, предварительное условие has_item трансформируется из условие правильности, что вызовет исключение в случае нарушения, к условие ожидания. Условие ожидания вызовет выполнение элемент быть отложено до тех пор, пока has_item держит. В реализации Eiffel Software, если SCOOP не включен, отдельный ключевое слово игнорируется и предполагается последовательная обработка.

Смотрите также

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

  1. ^ Бертран Мейер: Систематическое параллельное объектно-ориентированное программирование, in Communications of the ACM, 36, 9, September 1993, pp. 56-80, также имеется онлайн.
  2. ^ Бертран Мейер: Построение объектно-ориентированного программного обеспечения, 2-е издание, Prentice Hall, 1997 г.
  3. ^ Комптон, Майкл; Уокер, Ричард (2002). «Система поддержки SCOOP». Журнал объектных технологий. 1 (3): 119–157. Дои:10.5381 / jot.2002.1.3.a8.
  4. ^ Nienaltowski, P .; Арслан, В .; Мейер, Б. (2003). «Параллельное объектно-ориентированное программирование на .NET» (PDF). IEE Proceedings - Программное обеспечение. 150 (5): 308. Дои:10.1049 / ip-sen: 20030992.
  5. ^ ETH Zurich, кафедра программной инженерии: Страница проекта SCOOP
  6. ^ Программное обеспечение Eiffel: SCOOP: параллелизм для Eiffel

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