问题标签 [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.

0 投票
2 回答
584 浏览

erlang - erlang进程间多播

我正在尝试在 erlang 中开发一个聊天服务器,并且我想在一组进程之间广播消息,我提出了三种选择

  1. 将每条消息发送到主进程,主进程将消息发送给组的其他成员,这对我来说似乎是一个瓶颈!
  2. 使用包含组的所有 pid 的全局 ets 表(过度复制)。
  3. 使用 upd 多播。
  4. pg 模块,与 1 相同。

什么是最好的方法,还有其他选择吗?

0 投票
2 回答
1642 浏览

erlang - Erlang 共享 ETS 表

Erlang ETS 表可以在不同进程之间共享吗?因此,如果我有两个进程在不同的 Erlang 运行系统上运行,我能否以某种方式链接它们,以便我在一个 ETS 表中所做的所有更改都会反映在另一个表中?

0 投票
1 回答
332 浏览

erlang - 为什么 ets 粗鲁地删除我的表?

在ets中查找不存在的表(t3)后,将删除所有用户创建的表(t1和t2)。它是一个错误还是只是 ets 的一个奇怪的功能?

这是 Eshell 中的代码。



谁能告诉我这里有什么问题?

0 投票
2 回答
1166 浏览

erlang - erlang ets选择奇怪的行为

我在带有 ets:select 的 erlang 中有一个奇怪的行为。

我实现了正确的选择语句(下面的 4 和 5),然后在我的语句中出错(下面的 6),然后我再次尝试与 4 和 5 中相同的语句,它不再起作用。

怎么了 ?任何的想法 ?

我的ets表被破坏了吗?这会是 ets 的错误吗?

谢谢你。

0 投票
4 回答
3122 浏览

erlang - 与两个进程共享 ETS 表?

我在一个进程中创建 ETS 表,我想在另一个进程中使用它。我如何在第二个过程中“打开”ETS 表?在手册页中找不到好的功能。

0 投票
1 回答
427 浏览

erlang - Erlang - 使用 ETS 进行环基准测试

我正在尝试编写一个环形基准测试,其中我有 N 个进程,并通过它们发送消息 M 次。我想将进程的 pid 存储在 ETS 表中。

称呼:

loop/2 已导出,所以我不明白为什么会出现此错误。

0 投票
2 回答
389 浏览

file-io - 在 Erlang 中,我可以使用 ets:tab2list 而不包括嵌套元组的换行符吗?

我正在创建一个 ets;

我正在输入以下格式的数据:

我想将这些中的每一个保存为文本文件中的单独行。我正在尝试以下方式:

这给出了:

然后我io:format用来保存到文件。

但是,我想知道是否有一种简单的方法可以保存myets到文本文件而不在第三个元组中放置换行符(嵌套元组以oldsettingand开头newsetting)?

0 投票
2 回答
1725 浏览

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 是一个比率,即自上次更新以来的秒数。该表有助于随时了解每艘船的位置。

0 投票
1 回答
267 浏览

erlang - ets表继承和trap_exit消息

阅读“Learn You Some Erlang”我发现我可以为给定的 ets 表设置一个进程继承者,它将接收消息:

当拥有该表的进程死亡时。

过了一会儿,我发现这篇文章对如何使用此类功能保留 ets 表有不同的建议。

在最后一种方法中,用户建议也使用 trap_exit 以了解拥有该表的对等进程是否已死。现在我的问题是:我首先收到哪条消息?关于 ets 表的消息还是关于对等进程崩溃的消息?

真的有必要处理退出消息吗?当我收到 ets 消息时,我知道处理它的对等进程已经死了,对吗?还是它还活着一段时间?

0 投票
1 回答
209 浏览

erlang - ets:match 不返回预期值

我在使用 ets:match 时遇到问题。在下面的代码中,我希望 ets:match 返回 1 个找到的值,但没有返回任何值。为什么 ?