...ing logging 4.0

はてなブログに移行しました。D言語の話とかいろいろ。

2011-04-15から1日間の記事一覧

スレッドセーフな銀行クラス(2)

すべてのメソッドの内容を 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…