15

最近、InfoQ で Erlang に関するビデオを見ました。そのビデオでは、作成者の 1 人がメッセージ ループの動作を置き換える方法を紹介していました。

彼は単純にメッセージ ループ コードの新しいバージョンのラムダを含むメッセージを送信し、古いループを再度呼び出す代わりに呼び出しました。

そのコードは、Erlang で参照されているホットスワップですか? それとも、他のよりネイティブな機能ですか?

4

1 に答える 1

18

はい、erlang サーバーでのホットスワップは通常、この機能を指します。これについては、stackoverflow の質問Achifying code swapping in Erlang's gen_serverと、このすてきなErlang Generic Server チュートリアルまたはこの小さなチュートリアルでもよく説明されています。

Erlang/OTPモジュールは、コールバック モジュールに関数をgen_server実装することで、ホット スワップを実現する一般的な方法を提供します。Module:code_change/3

このようにして、サーバー コードをシャットダウンせずにアップグレードしたり、何かが期待どおりに機能しない場合は以前の実装にフォールバックしたりできます。一般に、ホット スワップは、ジェネリックリリース ハンドラを使用して配置する必要があります。

于 2010-06-03T19:09:46.167 に答える