複数のタスクが同時に.jsonファイルを読み込んで更新しようとしています。データベースのシナリオでは、私はちょうど行にロックを置くだろう...何か同様のファイルで行うことができますか?jsonファイルへのエリクシルスレッドセーフなアクセス?
これはgenserver handle_callで解決できることがわかりました。私は簡単なオプションがありますか?
複数のタスクが同時に.jsonファイルを読み込んで更新しようとしています。データベースのシナリオでは、私はちょうど行にロックを置くだろう...何か同様のファイルで行うことができますか?jsonファイルへのエリクシルスレッドセーフなアクセス?
これはgenserver handle_callで解決できることがわかりました。私は簡単なオプションがありますか?
ファイルの特定の行にロックを設定するメカニズムはなく、json構造内の特定の要素にロックを設定できるエリクサーjsonライブラリはありません。データの独自のエリクシール表現を作成し、構造から要素をチェックアウトしたりチェックインしたり、構造内の各サブピースを処理したりする必要があります。
また、elixir/erlang/otpを書くときにスレッドという言葉を忘れてしまうのが普通です。私たちはプロセスを使用します。
あり、実際にこのファイルを「ラップ」するためにGenServerを使用しない理由ではない - 努力は非常に低く、メリットが大きい:
さらに詳しい情報を得ることができます。 Elixirを起動すると、GenServerはちょっと重いと感じます(もう少し定型文があります)。しばらくすると、質問は「私はこれをGenServerで包みますか?」ではありません。 「このビットのGenServerはどのように見えますか?」それは自然になります。
JSONアクセスの周りのGenServerまたはあらゆる種類の「ラッパー」インターフェースは、Elixirに入る方法になります。他に何か考えているのであれば、あなたが考えていたインターフェースの例を教えてください。 – tompave
'GenServer.handle_call'より何が_easier_でしょうか? – mudasobwa