sync.rb - 2 phase lock with counter
	$Release Version: 1.0$
	$Revision: 27967 $
	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) {...}