gpt4 book ai didi

Erlang:将PID存储在ETS中

转载 作者:行者123 更新时间:2023-12-02 02:24:58 25 4
gpt4 key购买 nike

在服务器中,我尝试将其连接的客户端及其 PID 存储在 ets 表中。

该表是在服务器启动时创建的

initate_server() ->
ets:new(users, [set, named_table]).

当用户连接到服务器时,我调用一个函数

add_user(PID, Nick) ->
ets:insert_new(users, {Nick, PID}).

这又会生成一个错误,指出我使用了上面的错误参数。是否可以像这样将 PID 存储在 ets 表中?

错误内容如下:

 Something went very wrong! 
{{case_clause,
{'EXIT',
{badarg,
[{ets,insert,[users,{"user01", <0.66.0>}],[]},
{server, loop, 2,
[{file,

filenames and such...

最佳答案

是的,您可以将 pid 存储在 ETS 表中。 badarg 错误的原因可能是访问控制。

默认情况下,ETS 表是使用 protected 访问权限创建的。这意味着任何进程都可以从表中读取值,但只有创建该表的进程才能向其中写入值。根据您希望它如何工作,您可以让客户端进程向服务器发送消息以插入新值,或者使用 public 选项创建表,该选项允许任何进程写入表。

关于Erlang:将PID存储在ETS中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26216580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com