2010-11-24から1日間の記事一覧
『増補改訂版Java言語で学ぶデザインパターン入門マルチスレッド編』を読んだ。 Javaマルチスレッドはすごいと。Java見直した。がrubyもしゅごい Single Threaded Execution - この橋を渡れるのは、たった一人 Immutable - 壊したくとも、壊せない Guarded S…
Rubyで結城浩せんせいのJavaマルチスレッド本 その14 # activeobject rubyで書いた。 長いので折りたたみ #!/usr/bin/env ruby module ActiveObject require "thread" class MethodRequest def initialize( servant,future ) @servant = servant @future =…
Rubyで結城浩せんせいのJavaマルチスレッド本 その13 # thread specific storage スレッド毎の領域 スレッド毎に排他的なストレージ領域。スレッドはそれを使ってるのを知らない。 rubyで実装 Logを書くだけのモノ #!/usr/bin/env ruby # ThreadSpecific S…
Rubyで結城浩せんせいのJavaマルチスレッド本 その12 #Two-Phase termination 仕事中のスレッドを止める スレッドに例外を通知する。 フラグ waitしてるかも 例外 どこでキャッチしてるか分からない 2段階の終了 終了リクエスト受付 安全性を考慮して終…
Rubyで結城浩せんせいのJavaマルチスレッド本 その11 Future 引換券 番号札を持ってお席でお待ちください 重要なのは、「席でお待ちください」ってことで。席で待ってたら届くと言うこと。必要になれば取りに行って待つことも出来るが。。。(balking/guard…
Rubyで結城浩せんせいのJavaマルチスレッド本 その10 Worker-thread worker-thread thread-pool- Background-thread とも呼ばれる woker の役割 仕事が届いたら仕事する。 仕事がなければ、仕事が来るまでまつ。 細かい制御をしてチューニングして使う。 W…
Rubyで結城浩せんせいのJavaマルチスレッド本 その9 thread per message Thread per Message メインスレッドがTask毎に別スレッドを作って投げる。スレッドを作っては捨てる。スレッドは再利用されない。 Rubyで書いてみた。 Javaと違って匿名クラスの替わ…
Rubyで結城浩せんせいのJavaマルチスレッド本 8 # Read-Write Lock 読込中は書かない。 ログファイルのFlushとか、MySQLだとSELECT for UPDATE ってところか。 rubyで書いてみた #!/usr/bin/env ruby require 'thread' # Read Write Lock class ReadWriteLo…
Rubyで結城浩せんせいのJavaマルチスレッド本 7# Producer-and-Consumer Producer-and-Consumer 回転寿司だと思えば楽。作る人、食べる人、カウンターテーブル。が別々に仕事をする。 作るひとはどんどん作り 食べる人がどんどん食べる。 テーブルにお寿司…
Rubyで結城浩せんせいのJavaマルチスレッド本をやってみる試み、その5 Balking Balkinは待たずに、他の仕事を片付けます。一方でGuarded SuspensionはWaitセットで待つ。Balking は先に進みます。 Guarded Suspensionのこんなところが嫌なので、Balkingパタ…
Rubyで結城浩せんせいのJavaマルチスレッド本をやってみる試み、その5 Guarded Suspension Guarded Suspensionはガード条件が満たされるまで while (your_trun?) { wait() } で まつ。 2本スレッドで、キューを使う クライアント:リクエストをキューに置…