なんじゃくにっき

プログラミングの話題中心。

2010-11-28から1日間の記事一覧

Scala de Design Pattern: Future

Futureパターン: 要求を受けたら別のスレッドに処理を委譲して、その場では代わりのオブジェクトを取得する。 その後で、実際の実行結果を受け取る。 その際、別スレッドでの処理が終わってない場合、待ち続ける。 Scalaでは scala.concurrent.ops.futureと…

Scala de Design Pattern: Thread-Per-Message

要求毎にスレッドを生成し、作業は別スレッドで行うパターン。 作業を委譲したらすぐに制御は元のスレッドに戻す。 要求を行うのがClient、 要求を受けるのをHost、 別スレッドで要求を実行するのをHelperと呼ぶらしい(?) Scalaの場合、要求ごとにActorを…

Scala de Design Pattern: Balking

Guarded Suspensionに似ているが、 こちらは要求を受ける側は、キューにメッセージがない場合、待たずに処理を抜ける。 reactの代わりにreactWithinを用いると、待ち時間のタイムアウトをミリ秒単位で設定できる。 引数に0を設定するとメッセージが存在しな…

Scala de Design Pattern: Guarded Suspension

要求を送るオブジェクトと、要求を受けるオブジェクトがあり、 要求は一旦キューを介して受け渡される。 要求を受けるオブジェクトはキューに要求が送られるまで待ち続ける。 Actorを使って実装してみる。 Actorはメッセージボックスというキューを持ってい…

Scala de Design Pattern: Immutable

オブジェクトのインスタンスの状態が変わらないことをImmutable(不変)という。 Scalaでは基本的にImmutableを推奨。 純粋な関数型言語ではオブジェクトは全てImmutable。 このこと自体は並行処理には直接は関わらないが、 オブジェクトがImmutableであると、…