Erlang 实现互斥量
来源:互联网 发布:阿里云部署git服务器 编辑:程序博客网 时间:2024/05/16 05:45
#以下代码片段来自"Erlang编程指南", 值得注意一点的是stop/0函数发送停止消息以后, mutex进程仅在free状态下处理, 也就是说如果目前mutex没有人使用,直接结束mutex,如果正在使用,并且有等待在此信号量上的其他进程,那么这些正在使用的进程和正在queue的进程依然可以获取到mutex执行完他们的任务, 但是所有在stop信号之后的wait调用就不会被处理了, 很合理的处理.
-module(mutex).
-export([start/0, stop/0]).
-export([wait/0, signal/0]).
-export([init/0]).
start()->
register(mutex, spawn(?MODULE, init, [])).
stop()->
mutex ! stop().
wait()->
mutex ! {wait, self()},
receive
ok->
ok
end.
signal()->
mutex ! {signal, self()},
ok.
init()->
free().
free()->
receive
{wait, Pid}->
Pid ! ok,
busy(Pid);
stop->
terminate()
end.
busy(Pid)->
receive
{signal, Pid}->
free()
end.
terminate()->
receive
{wait, Pid}->
exit(Pid, kill),
terminate()
after
0->
ok
end.
##博客仅作个人记录##
- Erlang 实现互斥量
- [Erlang]用erlang实现binary_to_term
- [Erlang 0032] Erlang Binary的内部实现
- [Erlang 0107] Erlang实现文本截断
- Erlang实现ssh
- Erlang里实现MapReduce
- Erlang里实现MapReduce
- erlang实现二叉树
- Erlang里实现MapReduce
- Erlang实现handlersocket客户端
- erlang实现bresenham算法
- Erlang实现排序算法
- erlang实现快速排序
- erlang 实现多状态机
- erlang语言实现binary_to_term
- erlang语言实现binary_to_term
- Erlang 实现MapReduce
- erlang 实现geohash算法
- C语言计算日期,前n天,后n天方法
- 80老翁谈人生(314):别了,亲爱的CSDN读者朋友们!
- 【LeetCode】 413. Arithmetic Slices
- Amazon EC2 Instance Express API配置HTTPS
- ZCMU-1787-Babelfish
- Erlang 实现互斥量
- android_39_跳转至第2个Activity
- java常用单词
- Leetcode-455. Assign Cookies
- 将netbeans界面语言设置为英文
- 将netbeans界面语言设置为英文
- 循序渐进讲解 Python 装饰器
- C++11之动态类型引入(影响面广)
- LeetCode266. Palindrome Permutation