Erlang读者 - 作家程序

时间:2012-08-08 03:02:09

标签: concurrency erlang

我是Erlang的新手,目前我在Erlang中编写读写器程序时遇到了问题。基本上,共享内存位置可以由任意数量的任务同时读取,但是当任务必须写入共享内存位置时,它必须具有独占访问权限。 我的想法是将读取/写入方法产生到不同的进程,在这些方法中只打印出类似“读者阅读”/“作家写作”的内容。

然而,信号量/互斥量的使用确实让我感到烦恼,我没有多线程/并发的背景。任何人都可以提供一些线索如何编写这样的程序?

1 个答案:

答案 0 :(得分:9)

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

  1. 在erlang中生成一个存储数据并侦听消息的进程。
  2. 生成其他进程,向您的存储进程发送消息,要求返回数据 或发送要写入的数据。
  3. 数据处理的消息框将确保没有其他人可以与其他人同时写入数据。