2010-12-27 15 views
7

Sono un nuovo per Erlang e Erlang è la programmazione concorrenza orientata, non ha strutture di dati mutevoli, è per questo che è facile per parallelizzare.In che modo l'accesso a erlang è una risorsa condivisa?

Ma comunque, risorsa condivisa è ancora esisteva, ad esempio, la scrittura stesso file. in questo caso, in che modo erlang sincronizza l'accesso alla risorsa condivisa tra due processi?

risposta

11

In genere ciò che si potrebbe fare è avere un processo responsabile dell'accesso alla risorsa condivisa. Altri processi inviano messaggi al processo di gestione singola per le richieste di leggere o scrivere informazioni sulla risorsa condivisa.

Alcune risorse condivise (ad esempio alcuni tipi di tabelle ETS) possono essere lette da più processi ma solo un processo può scrivere . Quindi è possibile impostare un processo per serializzare le scritture sulla tabella ma consentire a chiunque di leggere da esso.

+0

Inoltre, dalla mia esperienza, il processo responsabile per serializzare la richiesta viene spesso implementato come un server generico (gen_server): http://www.erlang.org/doc/man/gen_server.html. –

+1

È possibile avere più writer in una tabella ETS. Ha uno schema di blocco del bucket IIRC quindi è abbastanza veloce a meno che non intervengano operazioni di scrittura di processi diversi. Uno spazio Tuple è una buona analogia per ETS. –

Problemi correlati