`

erlang简单实现生产者消费者

 
阅读更多
-module(procedure).
-export([procedure/2,consume/0]).

consume() ->
 receive
   X -> 
   case X<10 of
    true ->io:format("production consume ~w~n",[X]),consume();
	false ->io:format("work done ~n") end
 end.
   

procedure(Pid,Num) when Num=<10 ->
   Pid ! Num,
   timer:sleep(500),
   procedure(Pid,Num+1);
   
procedure(Pid,Num) ->
   io:format("work done ~n").

 

erlang感觉语法蛮有意思的 就写了写 

调用:

26> c("procedure").
procedure.erl:18: Warning: variable 'Num' is unused
procedure.erl:18: Warning: variable 'Pid' is unused
{ok,procedure}
27> Pid=spawn(fun procedure:consume/0).
** exception error: no match of right hand side value <0.106.0>
28> f().
ok
29> Pid=spawn(fun procedure:consume/0).
<0.110.0>
30> procedure:procedure(Pid,0).
production consume 0
production consume 1
production consume 2
production consume 3
production consume 4
production consume 5
production consume 6
production consume 7
production consume 8
production consume 9
work donework done
ok

 

内容也很简单 一个消费者监听着 生产者每隔0.5秒发送一次信息给消费者 消费者输出 一共循环10次(参数是0的话)

 

erlang编程一些语法细节蛮蛋疼的...

比如 if receive和case中每项用的是 ; 然后最后一项不要写符号 因为后面跟了个end

并列的语句之间写 , 

不注意就会写错

分享到:
评论

相关推荐

    Erlang和RabbitMQ

    在实际应用中,开发者可以利用RabbitMQ实现微服务间的异步通信,通过创建生产者和消费者来发送和接收消息。Erlang的强大力量在于其对分布式系统和并发处理的支持,这使得RabbitMQ成为许多大型分布式系统中不可或缺的...

    RabbitMQ+erlang.zip

    1. **并发性**:RabbitMQ中的每一个连接、通道、消费者都可以看作一个Erlang进程,充分利用Erlang的并发优势,处理大量并发请求。 2. **稳定性**:Erlang的容错性使得RabbitMQ能够优雅地处理故障,确保服务的连续性...

    Sqlite3+RabbitMQ+Celery Python从零开始搭建一个生产者消费者服务模型配套安装文件

    本套教程围绕“Sqlite3+RabbitMQ+Celery”搭建一个生产者-消费者服务模型,旨在帮助初学者快速理解和实践这一技术栈。 首先,Sqlite3是一个轻量级的关系型数据库,它无需单独的服务器进程,而是以文件形式存储数据...

    Rabbit,Erlang,消息队列。

    消息队列的工作原理是生产者将消息发送到队列,消费者从队列中接收并处理消息。RabbitMQ支持多种工作模式,如简单模式、Direct模式、Fanout模式、Topic模式和Header模式,以适应不同的应用场景。例如,Direct模式...

    Erlang+Rabbitmq.rar

    - 使用Erlang SDK,开发者可以直接与RabbitMQ服务器通信,创建生产者和消费者应用,实现消息的发布和订阅。 - Erlang中的`amqp_client`模块提供了与RabbitMQ交互的API,可以用于连接、声明交换机和队列、发送和...

    2020年初最新版Rabbit MQ 和 Erlang.rar

    消费者从队列中获取并消费消息,队列中的消息可以被多个消费者同时消费。 3. **绑定(Binding)**:绑定是交换机和队列之间的关系定义,它指定了消息如何从交换机路由到队列。通过设置不同的绑定规则,可以实现灵活...

    RabbitMQ服务+Erlang语言开发包.rar

    - **消费者(Consumer)**:接收并处理消息的应用。 在Windows上管理RabbitMQ,你可以使用RabbitMQ提供的管理界面(默认端口55672),或者通过命令行工具rabbitmqctl进行操作。例如,启动/停止RabbitMQ服务、查看...

    ERLang+RabbitMQ.rar

    4. **生产者与消费者**: 使用各种编程语言(如Python、Java、JavaScript等)的RabbitMQ客户端库,编写生产者和消费者代码,实现消息的发送和接收。 **总结** Erlang和RabbitMQ的组合为开发者提供了一种强大、可靠...

    brod:适用于ErlangElixir的Apache Kafka客户端库

    注意本产品包括由开发的软件Brod-适用于Erlang / Elixir的Apache Kafka客户端Brod是Apache Kafka协议的Erlang实现,为生产者和消费者提供支持。 为什么要“混血”? 特征支持Apache Kafka v0.8 + 可靠的生产者实现,...

    Erlang-opt_win64_23.0.zip

    Spring框架提供了`org.springframework.amqp`包,包含一系列的API和注解,使得创建RabbitMQ消费者和生产者变得直观。Spring Boot自动配置特性则进一步简化了这个过程,只需少量配置就能启动并运行RabbitMQ连接。 在...

    RabbitMQ-3.8.3和erlang-22.1安装包.rar

    通过将消息放入队列,生产者和消费者可以在不同的时间执行,无需等待对方响应,从而实现了异步处理。此外,消息队列还可以用作负载均衡工具,通过缓存消息来避免系统的瞬时压力。 在实际应用中,你需要了解如何创建...

    RabbitMQ 3.11.8 和Erlang 25.2 Windows版本安装包

    - **消息队列**:RabbitMQ 是一个中间件,它接收并转发消息,确保生产者和消费者之间的解耦。消息可以存储在队列中,等待消费者处理。 - **AMQP 协议**:AMQP 是一种标准的消息协议,支持多种编程语言,使得跨平台...

    rabbitmq&erlang.7z

    队列是持久化的,可以有多个消费者同时监听,但每条消息只会被一个消费者消费。 3. **Binding**:绑定是连接交换器和队列的规则,定义了消息如何从交换器流入队列。 4. **Producer**:生产者是发布消息到RabbitMQ...

    rabitmq381_erlang221.zip

    - **消费者(Consumers)**:消费者是从队列中获取并处理消息的应用。 在实际应用中,你可以使用RabbitMQ实现诸如任务调度、日志收集、异步处理等多种功能。例如,在微服务架构中,RabbitMQ可以作为服务间通信的...

    RabbitMQ&amp;Erlang.zip

    5. **发布和消费消息**:生产者通过交换机发送消息,消费者从队列中接收消息。 6. **虚拟主机**:虚拟主机是RabbitMQ中的命名空间,可以创建多个虚拟主机来隔离不同应用或团队的资源。 以上就是RabbitMQ和Erlang的...

    rabbitmq-3.8.8和erlang7(centos7).zip

    例如,创建一个简单的生产者: ```java import com.rabbitmq.client.*; public class RabbitMQProducer { public static void main(String[] args) throws Exception { ConnectionFactory factory = new ...

    erlang+rabbitmq.zip

    - **消息队列**:RabbitMQ 作为消息队列,负责接收、存储和转发消息,确保消息的可靠传输,即使在生产者和消费者之间有网络问题或延迟时。 - **AMQP 协议**:RabbitMQ 实现了 AMQP,这是一种标准的消息传递协议,...

    erlang安装包otp_win64_23.1

    - 生产者和消费者:编写应用程序,利用AMQP库连接RabbitMQ,发送和接收消息。 5. **最佳实践**: - 监控:使用RabbitMQ的监控工具或第三方插件监控性能和健康状况。 - 安全性:配置访问控制,限制用户权限,使用...

    rabbitMq加erlang

    以下是一个简单的Java生产者示例: ```java import com.rabbitmq.client.ConnectionFactory; import com.rabbitmq.client.Connection; import com.rabbitmq.client.Channel; public class Producer { public ...

    RabbitMQ浅析.pdf

    消息队列的主要作用是实现生产者和消费者的解耦,即生产者负责发送消息,而消费者负责接收消息,两者之间不直接交互,仅通过消息队列进行数据通信。这种方式可以提高系统的灵活性和可伸缩性,同时也能实现任务的异步...

Global site tag (gtag.js) - Google Analytics