问题标签 [ets]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
erlang - erlang进程间多播
我正在尝试在 erlang 中开发一个聊天服务器,并且我想在一组进程之间广播消息,我提出了三种选择
- 将每条消息发送到主进程,主进程将消息发送给组的其他成员,这对我来说似乎是一个瓶颈!
- 使用包含组的所有 pid 的全局 ets 表(过度复制)。
- 使用 upd 多播。
- pg 模块,与 1 相同。
什么是最好的方法,还有其他选择吗?
erlang - Erlang 共享 ETS 表
Erlang ETS 表可以在不同进程之间共享吗?因此,如果我有两个进程在不同的 Erlang 运行系统上运行,我能否以某种方式链接它们,以便我在一个 ETS 表中所做的所有更改都会反映在另一个表中?
erlang - 为什么 ets 粗鲁地删除我的表?
在ets中查找不存在的表(t3)后,将删除所有用户创建的表(t1和t2)。它是一个错误还是只是 ets 的一个奇怪的功能?
这是 Eshell 中的代码。
谁能告诉我这里有什么问题?
erlang - erlang ets选择奇怪的行为
我在带有 ets:select 的 erlang 中有一个奇怪的行为。
我实现了正确的选择语句(下面的 4 和 5),然后在我的语句中出错(下面的 6),然后我再次尝试与 4 和 5 中相同的语句,它不再起作用。
怎么了 ?任何的想法 ?
我的ets表被破坏了吗?这会是 ets 的错误吗?
谢谢你。
erlang - 与两个进程共享 ETS 表?
我在一个进程中创建 ETS 表,我想在另一个进程中使用它。我如何在第二个过程中“打开”ETS 表?在手册页中找不到好的功能。
erlang - Erlang - 使用 ETS 进行环基准测试
我正在尝试编写一个环形基准测试,其中我有 N 个进程,并通过它们发送消息 M 次。我想将进程的 pid 存储在 ETS 表中。
称呼:
loop/2 已导出,所以我不明白为什么会出现此错误。
file-io - 在 Erlang 中,我可以使用 ets:tab2list 而不包括嵌套元组的换行符吗?
我正在创建一个 ets;
我正在输入以下格式的数据:
我想将这些中的每一个保存为文本文件中的单独行。我正在尝试以下方式:
这给出了:
然后我io:format
用来保存到文件。
但是,我想知道是否有一种简单的方法可以保存myets
到文本文件而不在第三个元组中放置换行符(嵌套元组以oldsetting
and开头newsetting
)?
performance - 更新 Erlang ETS 表中所有值的最快方法是什么?
我想对 ETS 表中的所有元组应用一个函数:
该表是一组,每个键只出现一次。
我的表只包含相同类型的元组:
所有值都是::integer()
我想要做的是有一个特定的值 Elapsed 并用一个函数更新我所有的元组apply_vector/2
可能的解决方案
如果我使用
ets:foldl
,我的插入可能会在折叠期间被遍历,并导致无限(非常长)循环。我可以用 a 准备新的元组
ets:foldl
,然后插入整个列表。我可以插入一个新表,然后用新表替换旧表,但我不想通过调用 gen_server 来限制对表的访问,该表必须随时可以访问。
我不能使用
ets:update_element
,因为我需要读取 VX 和 VY 值来更新 X 和 Y。我知道有一些迭代器实用程序,但似乎没有人允许传递乐趣。
我需要每 1 - 5 秒进行一次更新。那么,对于 10 个元组,哪种解决方案最有效?有 100 个元组?有更多?
谢谢你 !
I Keep a list of boats,Key是Boat ID,X和Y是地理坐标,VX和VY代表运动向量:一秒的位移。Elapsed 是一个比率,即自上次更新以来的秒数。该表有助于随时了解每艘船的位置。
erlang - ets表继承和trap_exit消息
阅读“Learn You Some Erlang”我发现我可以为给定的 ets 表设置一个进程继承者,它将接收消息:
当拥有该表的进程死亡时。
过了一会儿,我发现这篇文章对如何使用此类功能保留 ets 表有不同的建议。
在最后一种方法中,用户建议也使用 trap_exit 以了解拥有该表的对等进程是否已死。现在我的问题是:我首先收到哪条消息?关于 ets 表的消息还是关于对等进程崩溃的消息?
真的有必要处理退出消息吗?当我收到 ets 消息时,我知道处理它的对等进程已经死了,对吗?还是它还活着一段时间?
erlang - ets:match 不返回预期值
我在使用 ets:match 时遇到问题。在下面的代码中,我希望 ets:match 返回 1 个找到的值,但没有返回任何值。为什么 ?