如果我想将插入用于共享状态,那么是否存在等待插入到ETS表的既定机制?
我知道mnesia支持表事件,我认为类似的机制对于普通的ETS很有用,这样一个进程就可以等到它所需要的数据被加载了。我认为唯一的方法是旋转循环,并不断请求给定的键,直到它到达,但这似乎非常低效。我宁愿得到一个消息回传。如果我在我的和ETS之间插入一个进程,我就把问题推到了最后。
发布于 2016-02-22 10:23:12
最简单的解决方法是启动gen_server进程,并通过它代理所有插入请求。然后,可以通过将回调保持在gen_server状态来注册回调,并在插入的键与模式匹配时调用它们。它甚至可以在一个单独的应用程序中运行,以便有一个专门的主管。
发布于 2016-02-21 23:32:05
ETS没有事件的概念。
但是,您可以通过将读取器进程放入“接收”子句中来实现您所描述的内容,然后让写入进程在加载数据后向读者发送一条消息。
发布于 2016-02-22 11:17:32
ets中没有事件处理。它是相当低级的语言特性,由您来围绕它制作一个包装器。顺便说一句,这是用mnesia做的。因此,您可以将您的共享状态封装到一个模块中,然后订阅并发送您自己。
https://stackoverflow.com/questions/35543146
复制相似问题