2010-08-12 9 views

Odpowiedz

5

Funkcje przekazujące wiadomości są w std.concurrency, które obsługuje tylko wątki. Tak więc typ przekazywania wiadomości używany do przekazywania wiadomości między wątkami dotyczy tylko wątków. W Phobos nie ma ani jednego, ani niczego podobnego. To nie znaczy, że nigdy nie otrzymamy czegoś takiego w Phobos (materiał jest cały czas dodawany do Phobosa), ale teraz nie istnieje.

Istnieje jednak moduł std.socket, który zajmuje się rozmowami z gniazdami, co jest oczywiście związane z siecią. Nie używałem go sam, ale wygląda na to, że wysyła i odbiera void[]. Nie jest więc tak przyjemny jak wysyłanie niezmiennych obiektów, jak w przypadku std.concurrency, ale pozwala na komunikację sieciową przez gniazda i prawdopodobnie w znacznie przyjemniejszy sposób, niż gdybyś używał wywołań C bezpośrednio.

+2

Obecnie std.concurrency zajmuje się tylko wątkami, ale rozumiem, że gdy Sean uzyska czas, będzie wdrażał proces cross/network sharing. Do usunięcia struktury użyto wątków, a Sean po prostu nie zdążył go ukończyć. –

+0

To świetnie. Jeśli działa to płynnie, to naprawdę jest potencjalną funkcją zabójcy. Zastanawiam się, jak będzie działać serializacja ... –

2

Wydaje się, że zostało to uwzględnione. Z Phobos documentation (znaleziono go przez Jonathan M Davis odpowiedź)

Jest to niskopoziomowe API wiadomości na który bardziej uporządkowanego lub ograniczające API może być zbudowany. Ogólna idea jest że każda jednostka jest messageable reprezentowane przez typ wspólny uchwyt (tzw Cid w tej implementacji), co pozwala komunikaty mają być wysłane do wątki w procesie, procesy dotyczące gospodarzowi, i foreign- hostuje procesy przy użyciu tego samego interfejsu, co . Jest to ważny aspekt skalowalności, ponieważ umożliwia on komponenty programu do rozłożenie na dostępne zasoby z kilkoma do żadnych zmian w rzeczywistej implementacji .

W tej chwili tylko wątki wewnątrzprocesowe są obsługiwane i odwoływane przez bardziej wyspecjalizowany uchwyt o nazwie Tid o wartości większej niż . Jest to skutecznie podklasa Cid, z dodatkowe funkcje specyficzne dla wiadomości w procesie przetwarzania .