memcachedプロトコルを使ったBlockingQueue

マルチスレッドプログラミングでよく使うBlockingQueueをmemcachedプロトコルを使ってネットワーク越しに使うことができるサーバーを実装してみました。
タスクをガンガンpushしていく一方で、ワーカースレッドならぬワーカーサーバーが1つずつpopして処理していくような分散処理に使えるかも知れません。スレッドプールのネットワーク分散版。

ソースコードCodeReposにあります:lang/ruby/lkserver

$ svn co http://svn.coderepos.org/share/lang/ruby/lkserver
$ cd lkserver

# memcachedテキストプロトコルのパーサーをコンパイル
$ ruby extconf.rb
$ make

# Rev(イベント駆動IOライブラリ)をインストール
$ gem install rev

# 11511/tcpで起動
$ ruby lkqueue.rb 11511

使い方

blocking pop
memcachedのgetコマンドでblocking popができます。keyは無視されますが何か指定してください。1つも値が入っていないときは、何かsetされるまでブロックします。
push
memcachedのsetコマンドでpushができます。