STM とロックフリーアルゴリズムの関係

This entry was posted by on Wednesday, 20 December, 2006
>STM というのはここでは、 Software Transactional Memory の略称です。DBMSのトランザクションのように共有メモリにアクセスする仕組みを提供することで、ロックなしに並列プログラミングをするための(狭義には Haskell の)仕組みです。という紹介をきのう、 >はてな Haskell グループに書きました >。 > >それで、 STM という表現とロックフリーアルゴリズムというパラダイムの関係がよくわかってないんですが、似たよーなものということでいいのかな。 STMが単なる実装の名前でしかないのであれば話ははやいんですが、 >wikipedia > とかを見るとそうでもないみたいなので。 > >でまあ、つらつらと眺めるに、 STM において本質的なのは「トランザクション」だということですね。アトミックにメモリアクセスができるかのように、つまり途中でほかのスレッドが変な処理を挟んだりしないかのように、動作することが求められ、またアボートできたり終了した時点でメモリへコミットされるようなもの。一方でその実現方式としてふつうはロックフリーにやりますよということで、 STM の方が概念的なもので、ロックフリーは実装パラダイムという違いなのかな。どうも STM の論文を読むとロックフリーであることが強調されているのでごっちゃになっていた。 > >というわけで、 Binary 2.0 conference での方がしゃべっていたようなメモリバリアとかいう低レベルな話はもちろん重要なんですが、 Haskell (というかGHC)にはすでに言語処理系の機能として、ロックフリーな機構を持っているという話でした。 >

Comments are closed.