2005-01-21 [長年日記]
λ. Composable memory transactions, Tim Harris, Simon Marlow, Simon Peyton Jones, and Maurice Herlihy. Submitted to PPoPP 2005.
を読んだ。
現在広く使われている並列プログラミングのモデルはcompositionalityに問題がある。例えばロックは、ロックを使った複数のシステムは組み合わせてより大きなシステムを作るのは難しい(ロックの順番如何でデッドロックに陥る)。例えばUnixのselect(2)
は、複数のファイルデスクリプタを同時に待つことが出来るが、複数のselect(2)
を使って書かれた手続き(が値を返すの)を同時に待つことは出来ない。etc。それに対して、STM(Software Transaction Memory)をベースにしたモデルは優れたcompositionalityを持っている。この論文で新たに導入している、ブロッキングのためのオペレーターretry
と、選択のためのオペレーターorElse
もcompositionalityの点で優れていて、いい感じ。
そして、STMを Concurrent Haskell のセッティングで表現しているのだけど、transaction中に取り消せない操作(副作用のある操作)が出来ないことはHaskellの型システムで保証されている。それから操作的意味論もちゃんと与えて、最後にGHCに実装してる。
ちなみに、GHC 6.4 に入る予定なので、今のうちに哲学者の食卓問題でも試しに書いてみる(DiningPhilosopherProblem.hs)。なお、表示等はsydneyさんがらくがきえんじん (2005-01-11)で書いているものを真似した。メインの部分を抜粋するとこんな感じ。
newPhilosopher :: String -> Fork -> Fork -> IO Philosopher newPhilosopher name leftFork rightFork = do st <- atomically (newTVar Thinking) let setState x = writeTVar st x lifecycle = do randomWait atomically $ setState Hungry atomically $ do takeFork leftFork takeFork rightFork setState Eating randomWait atomically $ do releaseFork leftFork releaseFork rightFork setState Thinking lifecycle th <- forkIO lifecycle return Philosopher{ phName = name, phThread = th, phState = st , phLeftFork = leftFork, phRightFork = rightFork
λ. メイドさん占い
あなたのメイドさん傾向を占います。
小熊さんの底に哀はあるの。(2005-01-21) で見かけたので、「メイドさん傾向って何やねん!」と思いつつやってみる。結果は「ちびっこメイドさん」だそうです。なんじゃそりゃ(笑
酒井さんは ちびっこメイドさん です!
- ちびっこメイドさんさんのあなたは、ファッションリーダーの素質がある人です。おしゃれについてのポリシーを持っていますが、決しておおげさに自分を誇示したりしません。 先駆けた情報を入手したり実行したりすることで、知らず知らずのうちに注目を集めます。純真無垢に反応を返すので、打てば響くの評判はいいでしょう。 ただし、人によっては素直な意見をぶつけて落ち込ませてしまったりすることもあったりします。ときには一度心の中で整理してから伝えてみるといいかもしれません。
- 酒井さんの運命の人は、現在京都タワーで、ぼーっとしています。
- そんなあなたの本日の運勢はこちらです!
λ. Jenga Framework ?
探索的モデリングの授業の補講で、徳田研のM2の人が作ってるBayesian Networkのソフトを見せてもらう。Bayonetのユーザーインターフェースはイマイチだったが、これは使い易そうだ。一般向けに公開されると嬉しいな。