class Mutex
Overview
A fiber-safe mutex.
Provides deadlock protection by default. Attempting to re-lock the mutex from the same fiber will raise an exception. Trying to unlock an unlocked mutex, or a mutex locked by another fiber will raise an exception.
The reentrant protection maintains a lock count. Attempting to re-lock the mutex from the same fiber will increment the lock count. Attempting to unlock the counter from the same fiber will decrement the lock count, eventually releasing the lock when the lock count returns to 0. Attempting to unlock an unlocked mutex, or a mutex locked by another fiber will raise an exception.
You also disable all protections with unchecked
. Attempting to re-lock the mutex from the same fiber will deadlock. Any fiber can unlock the mutex, even if it wasn't previously locked.
Defined in:
mutex.cr Constructors
Instance Method Summary
Instance methods inherited from class Reference
==(other : self)
==(other : JSON::Any)
==(other : YAML::Any)
==(other) ==,
dup dup,
hash(hasher) hash,
inspect(io : IO) : Nil inspect,
object_id : UInt64 object_id,
pretty_print(pp) : Nil pretty_print,
same?(other : Reference)
same?(other : Nil) same?,
to_s(io : IO) : Nil to_s Constructor methods inherited from class Reference
new new Instance methods inherited from class Object
! : Bool !,
!=(other) !=,
!~(other) !~,
==(other) ==,
===(other : JSON::Any)
===(other : YAML::Any)
===(other) ===,
=~(other) =~,
as(type : Class) as,
as?(type : Class) as?,
class class,
dup dup,
hash(hasher)
hash hash,
in?(*values : Object) : Bool
in?(collection) : Bool in?,
inspect : String
inspect(io : IO) : Nil inspect,
is_a?(type : Class) : Bool is_a?,
itself itself,
nil? : Bool nil?,
not_nil! not_nil!,
pretty_inspect(width = 79, newline = "\n", indent = 0) : String pretty_inspect,
pretty_print(pp : PrettyPrint) : Nil pretty_print,
responds_to?(name : Symbol) : Bool responds_to?,
tap(&) tap,
to_json(io : IO)
to_json to_json,
to_pretty_json(io : IO, indent : String = " ")
to_pretty_json(indent : String = " ") to_pretty_json,
to_s : String
to_s(io : IO) : Nil to_s,
to_yaml(io : IO)
to_yaml to_yaml,
try(&) try,
unsafe_as(type : T.class) forall T unsafe_as Class methods inherited from class Object
from_json(string_or_io, root : String)
from_json(string_or_io) from_json,
from_yaml(string_or_io : String | IO) from_yaml Constructor Detail
def self.new(protection : Protection = :checked)Source
Instance Method Detail