2010-12-27 11 views
7

Soy nuevo en erlang, y erlang es una programación orientada a la concurrencia, no tiene estructuras de datos mutables, por eso es fácil de paralelizar.¿Cómo accedera erlang el recurso compartido?

Pero, de todos modos, el recurso compartido todavía existe, por ejemplo, escribiendo en el mismo archivo. en este caso, ¿cómo sincroniza erlang el acceso al recurso compartido entre dos procesos?

Respuesta

11

Normalmente lo que puede hacer es tener un proceso responsable del acceso al recurso compartido. Otros procesos enviarían mensajes al proceso del administrador único para las solicitudes de leer o escribir información en el recurso compartido.

Algunos recursos compartidos (por ejemplo, algunos tipos de tablas ETS) se pueden leer mediante procesos múltiples, pero solo un proceso puede escribir en él. De modo que podría configurar un proceso para serializar las escrituras en la tabla pero dejar que cualquiera las leyera.

+0

Además, desde mi experiencia, el proceso responsable de serializar la solicitud a menudo se implementa como un servidor genérico (gen_server): http://www.erlang.org/doc/man/gen_server.html. –

+1

Puede tener varios escritores en una tabla ETS. Tiene un esquema de bloqueo de cubos IIRC, por lo que es bastante rápido a menos que diferentes operaciones de escritura de procesos colisionen. Un espacio Tuple es una buena analogía para ETS. –

Cuestiones relacionadas