Created
October 29, 2011 09:49
-
-
Save miura1729/1324289 to your computer and use it in GitHub Desktop.
ytl concurret revisionsサポート案
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Threadクラス (Rubyのとは違うので名前を替えたほうがいいか?) | |
| クラスメソッド | |
| new スレッドを作成する。ブロックを渡し、作成したスレッドでブロックを実行する。 | |
| Thread.newを実行したselfをコピーしブロックはそのselfを使う。 | |
| つまり、インスタンス変数を使用しても親スレッドとは競合しない。 | |
| Threadクラスのインスタンスを返す | |
| インスタンス変数 | |
| join スレッドの実行を待ち合わせする。子スレッドが終了したらmerge処理を行う。 | |
| merge処理はデフォルトでは親スレッドのselfを子スレッドのselfにコピーすることだが、 | |
| self_mergeメソッドでカスタマイズできる。 | |
| self_mergeメソッド | |
| Thread.newを実行するオブジェクトにself_mergeメソッドが定義されてれば、join時のmergeに呼び出される。self_mergeの | |
| 返した値がselfになる。 | |
| self_mergeは | |
| self_merge(cself) | |
| と呼ばれる。cselfは子スレッドのselfで親スレッドのselfは"self"でアクセスできる。 | |
| 例、親スレッドと子スレッドの合計を@totalに入れる場合。 | |
| def self_merge(cself) | |
| @total += cself.total | |
| self | |
| end | |
| デフォルトのself_mergeは次のように定義される | |
| def self_merge(cself) | |
| cself | |
| end | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment