繁体   English   中英

Erlang ETS表事件

[英]Erlang ETS table events

如果我想将其用于共享状态,是否有建立等待ETS表插入的机制?

我知道mnesia支持表事件,我想类似的机制对于纯ETS很有用,这样一个进程可以等到需要的数据加载完毕。 我认为这样做的唯一方法是旋转循环并连续请求给定密钥,直到它到达为止,但这似乎效率很低。 我宁愿收到消息回调。 如果我在我的ETS和ETS之间插入一个过程,那么我只是将问题推到了下线。

最简单的解决方法是启动gen_server进程,并通过该进程代理所有插入请求。 然后,您可以通过将回调保持在gen_server状态来注册回调,并在插入的键与模式匹配时调用它们。 它甚至可以在单独的应用程序中运行,以允许专门的主管。

ETS没有事件的概念。

但是,您可以通过将读取器进程放入“ receive”子句中,然后使写入器进程在加载数据后向读取器发送消息来实现您所描述的目标。

ets没有事件处理。 这是相当低级的语言功能,您可以自行包装。 顺便说一句,这是在mnesia完成的方式。 因此,您可以将共享状态包装到模块中,然后进行订阅并发送给自己。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM