ITpro連載 第11回 クロージャによる超軽量並行プロセスの簡単実装法

http://itpro.nikkeibp.co.jp/article/COLUMN/20070612/274231/

Erlangブーム(?)とFiberブーム(??)に便乗してみました。実験してみたら、百万プロセスぐらいまで平気です、と宣伝。

P.S. CPSを知らないと混乱すると思ったので記事には書きませんでしたが、要するにブロックするかもしれない操作(記事ではrecvのみ)のところだけCPSにして、継続をクロージャで表現しているわけです。普通のI/O(UNIXソケットからの受信とか)も実現したかったら、同様にCPSにして、selectなりpollなりでブロックするかどうかを判定すればOKです。あくまで「簡単実装法」なので、CPSで書かないといけないことは変わりませんが。

ちなみに、この手の話は別に僕が世の中で初めて考えたわけではなく(当たり前ですが)、少なくともA Poor Man's Concurrency Monad(1999年)の頃から広く知られています。