Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

背景 2011年からErlang/OTPの疑似乱数モジュールがあまりにもダメなのでなんとかしようといろいろ活動していたら、OTP 18.0に新しい疑似乱数モジュールrandを組み込んでもらえるという幸運に恵まれた。そして最近さらにこのモジュールにjump functionの機能追加をする作業をした1。この過程で「OTPに自分のモジュールをコミットする」ことについて、いろいろなことがわかってきたので、この記事ではざっと要点をまとめてみようと思う。 本当にそのモジュールはOTPで必要? そもそも論として本当にそのモジュールはOTPで必要かということをまず最初に考えないといけない。OTPは、今後パッケージマネージャを活用して分割される方向にあるとはいえ、基本的にはErlangとは不可分な形でついてくることが前提になっている。ということは、OTPの変更はErlang/OTPのユーザ全員2に対して影
スーパバイザは、他のプロセスを監視するという一つの目的に特化したプロセスです。 子プロセスが失敗した際に自動的に再起動させることによって、耐障害性の高いアプリケーションを作ることを可能にします。 設定 スーパバイザの魔術は Supervisor.start_link/2 関数の中にあります。 スーパーバイザプロセスと子プロセスを開始するのに加えて、子を管理するためにスーパーバイザが使用する戦略を定義することができます。 OTPの並行性レッスンで実装したSimpleQueueを用いて、始めていきましょう。 新しいプロジェクトを mix new simple_queue --sup を使って作成することで、スーパバイザツリーも一緒に作成することができます。 SimpleQueue モジュール用のコードは lib/simple_queue.ex へ、スーパバイザを起動するコードは lib/sim
並行性(コンカレンシー)に関するElixirの抽象化を見てきましたが、さらなる制御が必要になることもあります。そうした時のために、Elixirに組み込まれているOTPの振る舞いに目を向けます。 このレッスンではGenServerという重要な要素に焦点を当てます GenServer OTPサーバーは一連のコールバックを実装するGenServerの振る舞いをもったモジュールです。 最も基本的なレベルでは、GenServerは単一プロセスであり、更新された状態を伝える反復処理のたびにに1つのメッセージを処理するループを実行します。 GenServerのAPIを実演するために、値を格納し読みだす基本的なキューを実装します。 GenServerを始めるには、起動し、初期化処理を行う必要があります。 ほとんどの場合、プロセスをリンクしたいので GenServer.start_link/3 を用います。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く