[Ruby] межпроцесснаясинхронизация данных.
Eugene Scripnik
Eugene.Scripnik at itgrp.net
Thu May 8 15:27:44 MSD 2003
vic ismakaev wrote:
>>>Через потоки и Mutex - да,можно.
>>>Но я не хочу делать сервер многопоточным. Может быть потом,когда буду
>>>писать его с нуля.
>>>А сейчас хотелось бы просто добавить к той реализации сервера,который у
>>>меня есть добавить что-нибудь типа shared-memory или персистент объект.
>>
>>тогда разделяемая память с семафорами
>>смотри в сторону ruby-sysvipc:
>>http://raa.ruby-lang.org/list.rhtml?name=sysvipc
>>Там можно устраивать несколько видов межпроцессного взаимодействия.
>>Насколько я помню в библиотеке есть примеры.
>
> Как раз сейчас смотрю на нее .Только ее статус смущает - 0.0.3 expiremental.
Я ее активно использовал около года назад, это всего-лишь интерфейс к
системным вызовам. Просто его давно никто не обновлял. Нареканий не было.
>
> А в принципе мою задачу можно решить не прибегая к третим либам,тредам или
> файлам.?
Могу еще предложить трехуровневую организацию:
Клиент1---\ /--- prefork server1 ---\
Клиент2----> - <---- prefork server2 ----> Хранилище-сервер
... / \ ... /
КлиентN__/ \__ prefork serverM ___/
В качестве хранилища можешь использовать DRb сервер, который будет
раздавать shared ресурс. Треды он тебе обеспечит, Mutex допишешь к
ресурсам сам.
Если не хочешь возится с Mutex можешь вообще в качестве хранилища
использовать RDBMS. PostgreSQL поддерживает транзакции, он и обеспечит
изоляцию одновременного доступа.
Вариантов много, все зависит от желания :)
--
Eugene Scripnik
IT Group
Software Architect
Tel./Fax +380 (372) 58-43-10
email: Eugene.Scripnik at itgrp.net
http://www.itgrp.net/
More information about the Ruby
mailing list