concurrency - 我在erlang中遇到此错误消息以进行并发
问题描述
这是我的进出口
-import(calling, [create_receiver_process/1, create_senders_process/1]).
-export([main/1, read_file/1, merge_method/1, merge_method/2, master_process/1, print_data/1]).
这是我怀疑的代码,导致错误
{gotintro, Sender, Receiver, Time} ->
io:format("~p received intro message from ~p [~p]~n", [Receiver, Sender, Time]),
master_process(RPs);
{gotreply, Sender, Receiver, Time} ->
io:format("~p received reply message from ~p [~p]~n", [ Sender,Receiver, Time]),
master_process(RPs)
这是错误,我得到了
=ERROR REPORT==== 14-Jun-2020::20:58:23.841027 ===
Error in process <0.88.0> with exit value:
{undef,[{test,base_receiver_method,[],[]}]}
=ERROR REPORT==== 14-Jun-2020::20:58:23.848795 ===
Error in process <0.100.0> with exit value:
{undef,[{test,send_message,[john,joe],[]}]}
这是 base_receiver_method
base_receiver_method() ->
receive
{intro , Sender, Receiver, Time} ->
io:format("Message Intro ~p ~p~n", [Sender, Receiver]),
Name = string:concat(lists:flatten(io_lib:format("~p", [Sender])), "sender"),
N = list_to_atom(Name),
N ! {reply, Receiver, Sender, Time},
timer:sleep(round(rand:uniform() * 100)),
master ! {gotintro, Receiver, Sender, Time},
base_receiver_method();
{reply , Sender, Receiver, Time} ->
io:format("Message Reply ~p ~p~n", [Sender, Receiver]),
timer:sleep(round(rand:uniform() * 100)),
master ! {gotreply, Receiver,Sender, Time},
base_receiver_method()
after 1000 ->
exit("Time Up")
end.
这是发送消息:
send_message(S, R) ->
Name = string:concat(lists:flatten(io_lib:format("~p", [R])), "receiver"),
N = list_to_atom(Name),
{_, _, Time} = erlang:now(),
N ! {intro, S, R, Time}.
解决方案
尝试导出或导入您尝试调用的函数。该错误消息意味着您尝试调用的函数未定义,看起来您需要 updateimport
和 put base_receiver_method/0, send_message/2
,但在此之前,请尝试在您尝试导入的模块中导出这些函数。
推荐阅读
- c - 如何将可变数量的参数传递给 sscanf?
- react-native - 拦截堆栈导航器上的后退按钮
- html - 如何确保动态表为每列提供适当百分比的空间?
- node.js - 在调试模式下,有没有办法阻止计时器在 Node 中触发?
- mysql - 如何从MYSQL数据库中的多对多表中插入和选择数据
- python - Python 设置全局记录器并从命令行设置日志记录级别的最佳方法
- express - Express 中的异步控制器,用于将表单解析为 Mongoose
- javascript - 无法通过 ajax 发送文件( print_r($_FILES); Array ( ) )
- python - Seq2Seq 是否适合我的数据?
- java - 为什么与较少数量的线程相比,创建更多线程时总运行时间较慢