ギコ猫とGuarded Suspensionパターン

結城浩

目次

ギコ猫とGuarded Suspensionパターン



  ∧_∧  カタカタ   /‾‾‾‾‾‾‾‾‾‾‾‾
 (    )  ∧ ∧ < ifでガード条件をチェックするのはまずいです…と。
 (    )  (,,゜Д゜)  \____________
‾‾‾‾‾ (つ_つ____
‾‾‾日∇‾\|ThinkPad|\
       ‾   =========  \

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

/‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
| ほう、Guarded Suspensionパターンですか?

  ‾‾‾|/‾‾‾‾‾‾‾‾‾‾‾‾
  ∧_∧       /‾‾‾‾‾‾‾‾‾‾‾‾
  ( ・∀・)  ∧ ∧ < な、なんですか?あなた・・・
 (  ⊃ )  (゜Д゜;)  \____________
‾‾‾‾‾ (つ_つ____
‾‾‾日∇‾\|ThinkPad|\
       ‾   =========  \

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

/‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
| オブジェクトが適切な状態になっているときのみ処理する…

  ‾‾‾|/‾‾‾‾‾‾‾‾‾‾‾‾
  ∧_∧       /‾‾‾‾‾‾‾‾‾‾‾‾
  ( ・∀・)  ∧ ∧ < そうそう。whileでガード条件をチェックするんですよね…
 (     )  (;゜Д゜)  \____________
‾‾‾‾‾ (つ_つ____
‾‾‾日∇‾\|ThinkPad|\
       ‾   =========  \

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

/‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
| ガード条件が満たされるまでガンガンCPU時間を使え、と…

  ‾‾‾|/‾‾‾‾‾‾‾‾‾‾‾‾
  ∧_∧       /‾‾‾‾‾‾‾‾‾‾‾‾
  ( ・∀・)  ∧ ∧ < notifyされるまでwaitしてるんですってば!!
 (  ⊃ )  (゜Д゜;)  \____________
‾‾‾‾‾ (つ_つ____
‾‾‾日∇‾\|ThinkPad|\
       ‾   =========  \
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

※アスキーアートは2ch.netからお借りしました。

ギコ猫としぃ

まず、オブジェクトが適切な状態か、ガード条件をチェックします。

            ちゅぅ〜
     ∧ ∧ ∧∧
 イヤン (゜ー゜*) (゜ε゜ ,,)
     ノ つつ |   \
  〜(_OO ⊂UUO)〜

ガード条件を満たさない場合、スレッドはwaitします。

            ちぇっ・・・
     ∧ ∧ ∧∧
.    (*゜ー゜) (,, ゜Д゜)
     ノ  .|  |  \
  〜(_UU ⊂UUO)〜

ガード条件が変化したら、wait set中のスレッドにnotifyAllします。

     チュ♪
      ∧∧ ∧∧
     ( *^ 3(; ゜Д゜)
     ノ  .|  |  \
  〜(_UU ⊂UUO)〜

notifyAllされたスレッドはwait setから出てきます。

     ∧ ∧  ∧∧ にゃはは♪
     (*゜ー゜) (Д^ *)
     ノ つと  |  \
  〜(_OO ⊂UUO)〜

けれど、ガード条件は再度チェックしなければなりません。

            ちゅぅ〜
     ∧ ∧ ∧∧
 イヤン (゜ー゜*) (゜ε゜ ,,)
     ノ つつ |   \
  〜(_OO ⊂UUO)〜

※アスキーアートは2ch.netからお借りしました。

戻る

『Java言語で学ぶデザインパターン入門 マルチスレッド編』

豊かな人生のための四つの法則