【发布时间】:2019-03-01 01:37:08
【问题描述】:
这是我的代码:
defmodule Parent do
def arun(pid) do
:ets.new(:my_table,[:named_table, :set, :public, read_concurrency: true])
:ets.give_away(:my_table, pid, [])
end
def receiver do
pid = spawn(fn -> arun(self()) end)
receive do
{'ETS-TRANSFER',_,_,_} ->
IO.puts "ets got transferred"
_ ->
IO.puts "I dont know what happened"
end
end
end
但是当我试图编译这个运行时错误来了。
iex(31)> Parent.receiver
17:37:19.183 [error] Process #PID<0.204.0> raised an exception
** (ArgumentError) argument error
(stdlib) :ets.give_away(:my_table, #PID<0.204.0>, [])
parent.ex:4: Parent.arun/1
还有人可以告诉我制作 ets 表并将其所有权交给其他进程的正确方法吗? 我正在尝试这样做: 父进程将创建一个异步任务,该任务将创建一个 ets 表,然后此任务/进程将所有权返回给父进程。
【问题讨论】: