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