You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Erlang生产者消费者模型问题:传递并打印随机生成数

修正后的代码
-module(cooperate).
-compile(export_all).

producer(_Pid, 0) ->
    done;
producer(Pid, N) -> 
    RandomNum = rand:uniform(N),
    Pid ! {producer, RandomNum},
    io:format("process ~p producing ~p~n", [self(), RandomNum]),
    producer(Pid, N-1).

consumer() ->
    receive
        {producer, RandomNum} ->
            timer:sleep(10),
            io:format("process ~p consuming ~p~n", [self(), RandomNum]),
            consumer()
        after 40 ->
            stopping_terminus
        end.

go() ->
    Pid = spawn(cooperate, consumer, []),
    spawn(cooperate, producer, [Pid, 3]).
关键改动说明
  • 生产者端:
    1. 新增变量RandomNum存储生成的随机数,避免直接丢弃结果
    2. 发送消息时传递该随机数变量,而非原代码中的递减数值N
    3. 修正了原代码producer(_Pid, 0) -的语法错误,将-改为->
  • 消费者端:
    1. 调整消息匹配规则,接收并绑定生产者发送的随机数变量
    2. 打印逻辑直接使用该变量,确保输出与生产者生成的随机数一致

运行修正后的代码,即可实现你期望的效果:生产者生成随机数并打印,消费者接收该随机数并打印。

内容的提问来源于stack exchange,提问作者Andy891357

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 21:20:51