1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
|
=begin
=MutexM module
ǤդΥ֥ȤMutexεǽͿ mix-in
Τ褦ħ롣
* MutexƱͤ˥֥ȤФlock/unlock/synchronizeǤ롣
* lockΥåɤsynchronizeǽǤ롣synchronizelock
֤Ѳʤ
* synchronize attr_reader/writer/accessor Ǥ롣
* lockƤʤ㳰ȯ attr_reader/writer/accessor Ǥ롣
* åɤ̾ synchronize ǤƱ̾ΥåɤǤ롣
ץʲ˼
require 'mutexm'
class Balance
include MutexM
def initialize(f,b)
@foo = f
@bar = b
super
end
synchronize_reader(:foo, :bar)
def move(d)
@foo = @foo + d
@bar = @bar - d
[@foo, @bar]
end
synchronized :move
end
foo = Balance.new(10, 0)
p foo.move(5)
==ѹ
1.0.1
* initializemu_initializeʬ䡣[ruby-dev:13467]
0.9.2
* 㤦åɤunlockǤХν
* lockԤΥåɤkill줿б
0.9.1
* synchronize_reader/writer/accessor, lock_reader/writer/accessor,
synchoronized ʣ̾Ʊ˻Ǥ褦ˤ
* initializeʤƤư褦ˤŪ(?)ˤɤϵ䡣
0.9
* ǽθС
==Module Methods:
--- MutexM.initialize
MutexM
--- MutexM.mu_initialize
MutexM
--- MutexM.synchronize_reader(name)
synchronize attr_reader(name) 롣
--- MutexM.synchronize_writer(name)
synchronize attr_writer(name) 롣
--- MutexM.synchronize_accessor(name)
synchronize attr_accessor(name) 롣
--- MutexM.lock_reader(name)
lockƤʤ㳰Ȥʤ attr_reader(name) 롣
--- MutexM.synchronize_writer(name)
lockƤʤ㳰Ȥʤ attr_writer(name) 롣
--- MutexM.synchronize_accessor(name)
lockƤʤ㳰Ȥʤ attr_accessor(name) 롣
--- MutexM.synchronized(methodname)
å methodname ̾synchronize åɤ
롣Υåɤ _mu_methodname Ȥʤ롣
==Methods:
줾 mu_ ǻϤޤƱ̾Υåɤ롣
--- MutexM#synchronize
֥Ȥå֥å¹Ԥ롣¹Ը˥å롣
åɤåξ硢synchronize ϥåξ֤
Ѳ֥å¹Ԥ롣Ť synchronize Ƥ⡢¦
synchronize ϥåѲʤ
--- MutexM#locked?
åƤ硢֤
--- MutexM#try_lock
å褦Ȥơå硢֤åǤʤä
ˤϥ֥å֤
--- MutexM#lock
֥Ȥå롣٤˰ĤΥåɤåǤ롣
˥åƤ륪֥ȤФƥåԤȤåɤ
åޤǥ֥å롣
--- MutexM#unlock
å롣åԤˤʤäƤåɤμ¹ԤϺƳ롣
--- MutexM#in_synchronize
åɤåƤʤ硢㳰ȯ롣åƤ뤳Ȥ
ɽȤʤ롣
Copyright (c) 2000-2001 Masatoshi SEKI
((<m_seki@mva.biglobe.ne.jp|URL:mailto:m_seki@mva.biglobe.ne.jp>))
=end
|