2009/06/22

SBCL にも並列処理の流れ

SBCL の 1.0.29.31 に "Lock-free thread safe queue" が追加された。とてもライブラリ的なものなに処理系に含まれるなんて、並列処理の流れなんだろうな。メッセージパッシングのためのメールボックスの下地なんだろう。いまどきの欲しい機能ではある。

いまのところ queue なので要素の取り出しは dequeue しかない。残念ながら Erlang のパターンマッチングによる選択的な受信は実現できなさそう。

(require :sb-queue)

(defvar *queue* (sb-queue:make-queue))

(sb-queue:enqueue 'foo *queue*)
(sb-queue:enqueue 'bar *queue*)

(sb-queue:dequeue *queue*) ; => FOO, T
(sb-queue:dequeue *queue*) ; => BAR, T

0 件のコメント: