読者です 読者をやめる 読者になる 読者になる

gen_queue というライブラリを公開しました

Queue

とても地味で、どこかにありそうな気しかしないのだけど、gen_queueという小さなライブラリを公開した。これはErlang/OTPのアプリケーションとして動作する小さなライブラリで、デフォルトで起動するとひとつのキューをもった軽量プロセスが一人だけ動きます。

同居する他のErlang/OTPアプリケーションは、このキューにデータを入れたり出したりできます。出すときに空だとブロックして待たせてくれます。待たずにエラーを返す nb_pop を作るのも簡単ですがすぐには必要ないのでやっていません。

そのうち、長さ制限をつけて、 push も blocking にしたり nb_push というAPIも作ろうかと思います。Erlang/OTPシステムで内部的なタスクキューが欲しい場合にこれを使うとよいと思います。

もうひとつ、できると面白いかなと思うのは、複数のキューを supervisor 配下に作ることです。 app.config か何かで名前を教えてあげると起動時にその数だけ名前つきでキュー持ちのプロセスを作る。

まああとは gen_* な名前を持つ者としては behavioural にして、ユーザー定義コールバック handle_hogehoge をするとか、pushされたらトリガー的動作をするとか、夢見がちなことはいくらでもできるんですけどとりあえずこんなところで。