原来写过一个....我都忘记了..
http://fair-jm.iteye.com/blog/1894288
以上这个不对啊..看了下和所谓的生产者消费者差的远了..什么玩意儿(╯‵□′)╯︵┴─┴
..
%% @author cc fairjm %% @doc @todo Add description to Producer_Consumer. -module(producer_consumer). %% ==================================================================== %% API functions %% ==================================================================== -export([start/0,consume/0, produce/0,rec/1]). -define(SERVER,?MODULE). -define(NUM,100). %% ==================================================================== %% Internal functions %% ==================================================================== start() -> Pid=spawn(?MODULE,rec,[0]), case whereis(?MODULE) of undefined -> register(?SERVER,Pid); _Other -> unregister(?SERVER),register(?SERVER,Pid) end, Pid . rec(0) -> receive {put,Pid} -> Pid ! {put_success,1},rec(1) end ; rec(?NUM) -> receive {get,Pid} -> Pid ! {get_success,?NUM-1},rec(?NUM-1) end ; rec(N) -> receive {get,Pid} -> Pid ! {get_success,N-1},rec(N-1); {put,Pid} -> Pid ! {put_success,N+1},rec(N+1) end . %%同步消费 consume()-> SPid=self(), ?SERVER ! {get,SPid}, receive {get_success,Num} -> io:format("get successed count:~p~n", [Num]); _Other -> io:format("get failed~n") end, ok . %%同步生产 produce()-> SPid=self(), ?SERVER ! {put,SPid}, receive {put_success,Num} -> io:format("put successed count:~p~n", [Num]); _Other -> io:format("put failed~n") end, ok .
以上这个...还有点像样..
使用同步的生产和消费 小于等于0时 消费者堵塞 大于等于100时 生产者堵塞
erlang中的receive机制挺好的 如果你发送的消息不符合当前在堵塞的receive 就不会被取出 依旧在"信箱"里 等到有匹配的receive堵塞之后再重新被拿出
运行:
相关推荐
Erlang emulator 实现分析Erlang emulator 实现分析
erlang的timer和实现机制 Erlang程序设计
我自己在新学erlang,在LeetCode OJ上找了题目练习,题目很适合新手熟悉语言,但是LeetCode OJ里面只有几门主流语言的答案,下面是已完成的erlang源代码,后续有空再做其他问题续传,题目包含:(源码开头都有题目...
Erlang入门:构建application练习3,实例演示如果构建一个最简单的Erlang Application
erlang实现的网游服务器(OpenPoker系统)erlang实现的网游服务器(OpenPoker系统)erlang实现的网游服务器(OpenPoker系统)
NULL 博文链接:https://jias.iteye.com/blog/557863
erlang入门电子书 erlang编程 Introducing Erlang,作者Simon.St.Laurent
kmp游戏中使用频率较高,所以用erlang代码代码实现,效率还行。
[奥莱理] 网络应用开发 (Erlang 实现) (英文版) [奥莱理] Building Web Applications with Erlang Working with REST and Web Sockets on Yaws (E-Book) ☆ 出版信息:☆ [作者信息] Zachary Kessin [出版机构] ...
EKC 是的 Erlang 客户端,目前提供的消费者 API,是一个高吞吐量的分布式消息传递系统。 建造 EKC 使用 。 要构建运行make 。 客户 Kafka 协议客户端作为 OTP gen_server运行。 范围 描述 默认 笔记 主持人 要连接...
Erlang零成本实现云计算,为初学者提供参考和学习,并为企业建设云提供帮助
Erlang实现遗传算法,非常详细介绍了算法,这是一个非常难得一见的通俗易懂的好书
基于Erlang的即时通讯系统的设计与实现
erlang 安装包
erlog, 在Erlang中,Prolog解释器 Erlog - 用于Erlang应用程序的PrologErlog是在Erlang中实现的Prolog解释器,并与Erlang运行时系统集成。 它是Prolog标准的子集。 还包括 Erlog shell ( REPL ) 。如
Erlang入门:构建application练习5(监督树),以实例完全演示监督树的用法,Erlang入门必须知道的那点事
erlang程序设计 erlang入门手册
Erlang及其应用Erlang及其应用Erlang及其应用