Bardzo podoba mi się wiadomość przekazująca prymitywy, które D implementuje. Widziałem tylko przykłady wiadomości przekazujących w ramach programu. Czy jest dostępna obsługa rozpowszechniania wiadomości przez np. sieć?Rozproszona wiadomość przechodzi w D?
Odpowiedz
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.
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 .
- 1. rozproszona technologia pamięci podręcznej
- 2. Rozproszona kompilacja z bitbakiem
- 3. Czym jest rozproszona pamięć podręczna?
- 4. Rozproszona analiza rozwiązania w programie Resharper 4.5?
- 5. Rozproszona biblioteka pamięci współużytkowanej dla C++?
- 6. Kiedy usunąć w D?
- 7. Porównanie czasu w D
- 8. Pobierz plik w D
- 9. QueryPerformanceCounter w D?
- 10. odpowiednik remove_if w D
- 11. Czy DLL D może działać w SAS?
- 12. W języku java -D co oznacza skrót D?
- 13. Dodawanie macierzy 1-D do macierzy 3-D w Numpy
- 14. Różnica między "\\ d +" i "\\ d ++" w java regex
- 15. Co to jest (\ d +)/(\ d +) w wyrażeniu regularnym?
- 16. Jak połączyć z bibliotekami D w programie D
- 17. pisanie w kaczce w D
- 18. Dlaczego ten program przechodzi w nieskończoną pętlę?
- 19. wyrażenie regularne przechodzi w nieskończonej pętli
- 20. Passport.js nie przechodzi użytkownikowi wystąpić w req.login()
- 21. Uwolnienie zasobów w języku D
- 22. Implementacja C API w D
- 23. Włókna nad wątkami w D
- 24. Wykrywanie nazw funkcji w D
- 25. Jak wdrożyć zakresy w D
- 26. Czyste funkcjonalne programowanie w D
- 27. Skonsultuj wiadomość w RAISERROR
- 28. Pusta wiadomość w gridPanel
- 29. FuncAnimation przechodzi obok argumentu klatek
- 30. Kod nie przechodzi pierwszej walidacji
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ć. –
To świetnie. Jeśli działa to płynnie, to naprawdę jest potencjalną funkcją zabójcy. Zastanawiam się, jak będzie działać serializacja ... –