twitter の IVar Offer Broker について
なるへろ、ChannelHandlerに来たイベントを全部Brokerに突っ込んでくれるから、使う側はBrokerやOfferとして取れるということか。
2012-06-16 18:13:04com.twitter.concurrentの基礎になってるIVarというのは"I-structured variable"で、CTMCP(ガウディ本)の「宣言的並列性」という章に出てくる概念らしい。のだが、その旨がコメントにしか書いてなくて難儀すぎる。 #scala
2012-06-16 23:45:57ググっても"i-structure"の説明が全然出てこないというか、ググラビリティが低すぎて関係ないページばかり出てくるので大人しくIVarのコメントを解読する。 #scala
2012-06-16 23:59:34FutureとかOfferとかに登録したコールバックを実行するのは、Promise#updateIfEmpty(Try[A])→IVar.set(A)を呼び出したスレッドだ、という当たり前の事実を確認して満足した。 #scala
2012-06-17 02:03:42finagle-streamを調べてたら、ChannelHandlerのコンストラクタでOfferを作ってどこにも渡さない、というのがあって?となってたんだけど、つまりHandlerにイベントが入ってきた時にBrokerから起こされるみたい。 #scala #finagle
2012-06-17 02:40:26つうわけで、Okの後にCallbackが来るのをハンドリングするには、ChannelHandlerにBrokerを持たせておいて、OkにFuture[Callback]を含めて渡し、Callbackが到着した時点でBrokerにsendしてやるのが良いのかな。
2012-06-17 02:52:03CTMCPの原文あった。4.9節のpp.342-343。単一代入変数の実例の一つで"I-structure = incomplete structure"の略だそうな。ちなみに、もう一つはFuture。二つは兄弟なわけだ。 #scala http://t.co/zZaEKhuY
2012-06-17 03:13:49"I-structure"は単一代入変数の配列であり、全要素の計算が完了する前でも個々の変数にアクセスできる。データフロー・マシンで並列プログラムを書くための構文要素で、"Id"や"pH"(parallel Haskell)といった言語で採用されている、と。 #scala
2012-06-17 03:23:58あー、parallel Haskellって要するにHaskellなのね。つまり、素直にIVarで検索すればよろしいということか。 #scala
2012-06-17 03:55:16個々の操作を見てみるとかなり違う部分があるけど、まぁ、元々はHaskellあたりから持ってきたアイデアだということが分かったので寝る。 #scala
2012-06-17 04:11:49Offerって、今のところOffer.selectを再帰呼び出しと組み合わせてイベント処理ループを作るくらいしか見たことがないんですけど、他に何か面白い使い方とかあるんでしょうか。 #scala
2012-06-19 21:55:35@okapies これ https://t.co/oEppGdTA の ack みたいに、ある種の状態変更メソッドをオブジェクトとして外部から与えられるっていうのはちょっと面白いなと思ってました
2012-06-19 21:58:47@gakuzzzz 咀嚼しようと頑張ったのですがギブアップしました。3~5ツイートくらいで詳細を頂けると大変ありがたく…w
2012-06-19 22:16:42