sync.rb - 2 phase lock with counter
    $Release Version: 1.0$
    $Revision: 38577 $
    by Keiju ISHITSUKA(keiju@ishitsuka.com)

Sync_m, Synchronizer_m
Usage:
 obj.extend(Sync_m)
 or
 class Foo
     include Sync_m
     :
 end

 Sync_m#sync_mode
 Sync_m#sync_locked?, locked?
 Sync_m#sync_shared?, shared?
 Sync_m#sync_exclusive?, sync_exclusive?
 Sync_m#sync_try_lock, try_lock
 Sync_m#sync_lock, lock
 Sync_m#sync_unlock, unlock

Sync, Synchronizer:
Usage:
 sync = Sync.new

 Sync#mode
 Sync#locked?
 Sync#shared?
 Sync#exclusive?
 Sync#try_lock(mode) -- mode = :EX, :SH, :UN
 Sync#lock(mode)     -- mode = :EX, :SH, :UN
 Sync#unlock
 Sync#synchronize(mode) {...}