2010-08-12 11 views
10

Mi piace molto il messaggio che passa le primitive che D implementa. Ho visto solo esempi di messaggi che passano allo entro il un programma. Esiste il supporto per la distribuzione dei messaggi oltre, ad es. una rete?Messaggio distribuito che passa in D?

risposta

5

Le funzioni di passaggio dei messaggi sono in std.concurrency, che riguarda solo i thread. Quindi, il tipo di messaggio che passa usato per passare i messaggi tra i thread è solo per i thread. Non c'è RMI o qualcosa del genere in Phobos. Questo non vuol dire che non otterremo mai qualcosa del genere in Phobos (roba viene aggiunta a Phobos tutto il tempo), ma al momento non esiste.

C'è, tuttavia, il modulo std.socket che si occupa di parlare ai socket, che è ovviamente relativo alla rete. Non l'ho usato da solo, ma sembra che invia e riceve void[]. Quindi, non è bello come mandare oggetti immutabili in giro come fa con std.concurrency, ma ti permette di fare comunicazioni di rete tramite socket e presumibilmente in un modo molto più gradevole che se tu stessi usando le chiamate C direttamente.

+2

Attualmente std.concurrency tratta solo i thread, ma la mia comprensione è che quando Sean ottiene il tempo implementerà cross processing/condivisione di rete. Il threading è stato utilizzato per ridurre la struttura e Sean non ha avuto il tempo di terminarlo. –

+0

È grandioso. Se funziona senza problemi, è davvero una potenziale caratteristica killer. Mi chiedo come funzionerà la serializzazione ... –

2

Sembra che questo sia stato preso in considerazione. Dalla Phobos documentation (trovato attraverso Jonathan M Davis risposta)

Questo è un Messaging API di basso livello su che più strutturate o limitativi API possono essere costruite. L'idea generale è che ogni entità messageable è rappresentato da un tipo comune maniglia (chiamato Cid in questa implementazione), che consente di inviare messaggi a thread nel processo, processi in ospitante, e straniera processi host utilizzando la stessa interfaccia . Questo è un importante aspetto della scalabilità perché consente di distribuire le componenti di un programma su tra le risorse disponibili con poche o nessuna modifica all'attuazione effettiva di .

Al momento, solo i thread in fase di elaborazione sono supportati e referenziati da un altro handle specializzato chiamato Tid. È in effetti una sottoclasse di Cid, con le funzionalità aggiuntive specifiche per la messaggistica in-process .