私はの初心者ですので、私はgen_server
について問題があります。私はまだわかりませんcode_change()
機能はどのように機能していますか?gen_serverモジュールでcode_change()関数がどのように機能しますか?
私の説明ができますか?
ありがとうございます。
私はの初心者ですので、私はgen_server
について問題があります。私はまだわかりませんcode_change()
機能はどのように機能していますか?gen_serverモジュールでcode_change()関数がどのように機能しますか?
私の説明ができますか?
ありがとうございます。
本当に簡単です。 gen_server
が実行されているときには、呼び出しの間に渡される状態(最後の引数はhandle_call
、handle_cast
およびhandle_info
)が含まれます。これが2つの要素{a, b}
のタプルで、release handlerでホットコードをアップグレードし、新しいコードで3つの要素のタプルがあるとします。{a, b, c}
新しいコードが古い状態を使用する前に状態を変換する必要があります。
これはcode_change
で行います。 Release Handling Instructionsでは、update
命令を指定してから、リリースハンドラがライブノードのコードをアップグレードするときに、code_change
関数を呼び出して状態を変換します。状態が変換されている間、プロセスは一時停止され、新しい状態で再開されます。
リリースハンドラを使用してライブノードでリリースをリリースしていない場合は、おそらく心配する必要はありません。それでも、それは状態フォーマットを変更しなければならない場合にのみ使用されます。これはそれほど頻繁ではありません。
大きな助けを感謝、Amiramix :) –
あなたは大歓迎です!あなたの質問に答えるなら、あなたが答えを受け入れることができることを忘れないでください:) – Amiramix
おそらく、[Erlangのgen_serverでコードをスワップする]の複製(http://stackoverflow.com/questions/1840717/achieving-code-swapping-in-erlangs-gen-server)。 –
ありがとう、私は解決しました:) –