Sagittariusには(util concurrent)があるのだが、今までこのスタイルのライブラリを追加してなかった。理由としては
- 実装自体はトリビアルであること
- ライブラリにするにはアイデアの練りが足りないこと
(import (rnrs) (util concurrent))
(define actor
(make-shared-queue-channel-actor
(lambda (input-receiver output-sender)
(let loop ()
(let ((in (input-receiver)))
;; do whatever with the input
(output-sender (result)) ;; if output should be sent
(loop))))))
(actor-send-message! actor 'message) ;; send a message to the actor
(actor-receive-message! actor)
わざわざチャンネルに使われているキュー名が入っているのは以下の理由から- shared-priority-queueバージョンのアクターもある
- 入力と出力にどんなキューが使われるのか分からないので、make-actorみたいなのにはできない
これをアクターと呼んでいいのかは正直よくわからないが、広義ではアクターモデルだろうということで。
No comments:
Post a Comment