4

我对 Erlang 很陌生,目前我在用 Erlang 编写读写器程序时遇到问题。基本上,一个共享内存位置可以被任意数量的任务并发读取,但是当一个任务必须写入共享内存位置时,它必须具有独占访问权限。我的想法是为不同的进程生成读/写方法,并在这些方法中打印出诸如“读者阅读”/“作家写作”之类的内容。

但是,信号量/互斥量的使用确实困扰着我,而且我没有多线程/并发方面的背景。谁能提供一些线索如何编写这样的程序?

4

1 回答 1

9

互斥量和信号量只是定义两个并发进程/线程之间的同步点的一种方式。在 erlang 中,这些大多被在 erlang 进程之间发送和接收消息所取代。在 erlang 中执行此操作的惯用方法是:

  1. 在 erlang 中生成一个进程来存储您的数据并侦听消息。
  2. 产生其他进程,将消息发送到您的存储进程,要求返回数据或发送要写入的数据。

您的数据处理的消息框将确保没有其他人可以与其他人同时写入数据。

于 2012-08-08T03:23:07.763 回答