2011-04-01から1ヶ月間の記事一覧
すべてのメソッドの内容を synchronized ブロックに含めるのならクラスを synchronized クラスにしてもよい. synchronized クラスのメンバはそのインスタンスを shared 型で生成しなければ呼び出せないので,この場合には new Bank ではなく new shared(Ban…
適切に synchronized ブロックを使えば利用者側で気をつける必要がなくなる. クラスメンバの中での synchronized は synchronized (this) と同じ. import std.stdio; import core.thread; class Bank { private int money_; void payin(int m) { synchroni…
どこでどのような競合を起こしうるのか想像するのが難しい. このようにスレッドセーフに使えるクラスを「スレッドコンパチブルである」という. import std.stdio; import core.thread; import core.sync.mutex; class Bank { private int money_; void pay…
import std.stdio; import core.thread; class Bank { private int money_; void payin(int m) { money_ += m; } void payout(int m) { money_ -= m; if (money_ < 0) { // クラスの利用者が注意していればここには到達しないはず? throw new Exception("pa…
本を読みながらコードを書いていきたい. Mutexは単にひとつのスレッドからしか実行できないようにするもの. Conditionは明示的に通知をしてスレッド間で同期を取ることができるもの. Conditionの方がMutexよりも細かい制御ができる. コードが間違ってい…
京都から遠路はるばる行ってきました. 全体の流れ 最初に,@repeatedly さんが唯一スライドを使ってアジェンダをプレゼンして,D言語の現状的なものを説明. Phobosには通信処理を書くための機能が不足しているけど,etc.c.curlが入ったのでそれを使えばも…
今,フォークしたリポジトリのリモートブランチだけがある. $ git remote origin本家のリモートリポジトリの短縮名を登録する. $ git remote add github git://github.com/D-Programming-Language/dmd.git本家の更新をローカルで反映させる. $ git pull -…