2011-01-01から1ヶ月間の記事一覧

他のプロセスから送られてきたメッセージを誤受信しないよう制限する

刺身☆ブーメランのはてなダイアリー 2011/01/12(Wed) への返信です。 元コードの wait_server:client/3 は、receive で From を束縛しているので、この状態だとメッセージの選択受信になりません。From を Server_Pid に変更すると、ただしく動作すると思い…

Scala STM を試してみる その4 (Actor vs Actor + STM その2)

その1、その2、その3 に引き続き、今回は reply が不要なパターン*1で試してみました。 import scala.concurrent.stm._ import scala.actors.{Actor, Exit} import scala.actors.Actor.actor import scala.actors.Actor.State.{New, Terminated} import Syst…

Actor + CPS でコールバック関数を隠蔽する

勉強会第20回 - Scala勉強会 in 渋谷で久しぶりに発表するので下準備など。 ちょっとイロイロと手抜きコードですが… runTest メソッドだけ注目して下さい。switch メソッドを評価する度に Actor が切り替わります。 object Trampoline { import scala.actors…

Remote Actor + CPS

下記は、あまり嬉しくない。Remote Actor 間でトランポリンする方法を考え中。うーん、reset と shift 以外の制御構造が欲しいと思うのは私だけ? object RemoteTest { import scala.actors.{Actor, AbstractActor} import scala.actors.Actor.actor import …

Scala Actor の reply が正しくできない問題は scala.actors.Channel が悪いのかも?

突っ込み大歓迎です。というか助けてください。環境は、Mac OS 10.6.5, Scala 2.8.1.final, Java 1.6.0_22 となります。 検証用のコードは、Scala STM を試してみる その3 で使ったコードの修正版のこちらとなります。STM と対比するために Actor のみを用い…

Scala STM を試してみる その3 (Actor vs Actor + STM)

前々回、前回に引き続き ScalaSTM を試してみました。 結論から言うと、私の環境では Worker の数が 300 を超えた辺りから、カウンタ用の Actor への問い合わせがタイムアウトしまくるので、Actor + STM の方が良好な結果が得られました。 今回テストに使用…

Scala STM を試してみる その2

前回に引き続き ScalaSTM を試してみました。 object SampleForSTM2 { import scala.concurrent.stm._ import scala.util.control.Exception.allCatch def main (args: Array[String]) { doTest( "case5" -> case5, "case6" -> case6 ) } def doTest(testCas…