ギコ猫と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言語で学ぶデザインパターン入門 マルチスレッド編』

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