Распределенная передача сообщений в D? - PullRequest
10 голосов
/ 13 августа 2010

Мне действительно нравятся примитивы передачи сообщений, которые реализует D.Я видел только примеры передачи сообщений внутри программы.Поддерживается ли распространение сообщений, например, по сети?

Ответы [ 2 ]

5 голосов
/ 13 августа 2010

Функции передачи сообщений находятся в std.concurrency, который работает только с потоками.Таким образом, тип передачи сообщений, используемый для передачи сообщений между потоками, предназначен только для потоков.На Фобосе нет RMI или чего-то подобного.Это не значит, что мы никогда не получим нечто подобное в Фобосе (материал постоянно добавляется в Фобос), но его сейчас не существует.

Однако есть стандарт.модуль сокета, который имеет дело с разговором с сокетами, который, очевидно, связан с сетью.Я не использовал его сам, но похоже, что он отправляет и получает void[].Таким образом, это не так приятно, как отправка неизменных объектов, как вы делаете это с помощью std.concurrency, но оно позволяет вам осуществлять сетевое общение через сокеты и, вероятно, гораздо приятнее, чем если бы вы использовали вызовы языка C.

2 голосов
/ 15 августа 2010

Кажется, что это было рассмотрено. Из документации Фобоса (нашел ее через Джонатана М. Дэвиса)

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

Сейчас только внутрипроцессные потоки поддерживается и упоминается более специализированная ручка называется Tid. это эффективно подкласс Cid, с дополнительные функции, специфичные для обмен сообщениями в процессе.

...