Ринда (язык программирования Ruby)
Эта статья нуждается в дополнительных цитатах для проверки . ( апрель 2016 г. ) |
Rinda — это программная библиотека для создания модульных и распределенных взаимодействующих сервисов в Ruby с использованием пространства кортежей или Linda парадигмы распределенных вычислений .
Основан на исходном коде, первоначально опубликованном сообществом Ruby Масатоши СЭКИ в 2000 году. [ 1 ] Позже Ринда была поглощена основным распределенным модулем Ruby (DRb) Ruby . Rinda распространяется как часть основной библиотеки Ruby, начиная с Ruby 1.8.
Пример использования
[ редактировать ]Rinda предоставляет структуру, с помощью которой несколько процессов Ruby (которые могут работать или не работать на одном компьютере) могут добавлять, получать доступ и изменять кортежи (упорядоченный список элементов), хранящиеся в общем репозитории данных (пространстве кортежей).
Например, следующая программа создает новое пространство кортежей Rinda и инициализирует службу DRb, которая ожидает запросов, поступающих по сети.
require 'rinda/tuplespace'
URI = "druby://localhost:61676"
DRb.start_service(URI, Rinda::TupleSpace.new)
DRb.thread.join
Используя Rinda, другие приложения могут опрашивать пространство кортежей на наличие кортежей, соответствующих определенным критериям.
Например, приведенная ниже программа подключается к службе Rinda и прослушивает любой кортеж, состоящий из арифметического оператора, следующего за двумя числами (например, последовательность «+ 2 4»). Когда такой кортеж обнаружен, программа вычисляет результат математической операции ( например, обработка «+ 2 4» в «6») и сохранение его в пространстве кортежей.
require 'rinda/rinda'
URI = "druby://localhost:61676"
DRb.start_service
ts = Rinda::TupleSpaceProxy.new(DRbObject.new(nil, URI))
loop do
ops, a, b = ts.take([ %r{^[-+/*]$}, Numeric, Numeric])
ts.write(["result", a.send(ops, b)])
end
Наконец, приложения Rinda могут добавлять или удалять кортежи из пространства кортежей.
Например, следующая программа отправляет префиксные арифметические кортежи в пространство кортежей и считывает результат (отправленный программой выше).
require 'rinda/rinda'
URI = "druby://localhost:61676"
DRb.start_service
ts = Rinda::TupleSpaceProxy.new(DRbObject.new(nil, URI))
tuples = [["*", 2, 2 ], [ "+", 2, 5 ], [ "-", 9, 3 ]]
tuples.each do |t|
ts.write(t)
res = ts.take(["result", nil])
puts "#{res[1]} = #{t[1]} #{t[0]} #{t[2]}"
end
Ссылки
[ редактировать ]- ^ «Туплспейс» . Архив приложений Ruby (RAA) . Проверено 26 октября 2011 г.
Внешние ссылки
[ редактировать ]