我有多个任务试图同时读取然后更新.json文件。在数据库场景中,我只是把锁放在一行......可以用文件做类似的事吗?
我知道这可以通过genserver handle_call解决,我有更简单的选择吗?
答案 0 :(得分:1)
没有机制可以锁定文件的特定行,并且没有我知道的elixir json库可以让你锁定json结构中的特定元素。你必须建立你自己的数据的灵丹妙药表示,并做一些像“checkout”和“签入”结构中的元素或者在一个过程中包装结构的每个子片段。
在编写elixir / erlang / otp时,你也应该忘记单词thread。我们使用流程。
答案 1 :(得分:0)
确实没有理由不使用GenServer来包装"这个文件 - 努力很低,收益很大:
我相信我能拿出更多。在启动Elixir时,GenServer感觉有点重量级(它确实有更多的样板);过了一会儿,问题就变成了#34;我把它包装在GenServer中吗?"但是"这个位的GenServer会是什么样子?" - 它变得很自然。