class Thread
Overview
Match data is unique per thread.
Match data contains a buffer for backtracking when matching in interpreted mode (non-JIT). This buffer is heap-allocated and should be re-used for subsequent matches.
Only a single match
function can run per thread at any given time, so
there can't be any concurrent access to the match data buffer.
Included Modules
- Crystal::System::Thread
Defined in:
crystal/system/thread.crcrystal/system/thread_condition_variable.cr
crystal/system/thread_linked_list.cr
crystal/system/thread_mutex.cr
crystal/system/unix/pthread_condition_variable.cr
crystal/system/unix/pthread_mutex.cr
regex/pcre2.cr:241
regex/pcre2.cr:255
Constructors
-
.current : Thread
Returns the Thread object associated to the running system thread.
-
.new(name : String | Nil = nil, &func : Thread -> )
Creates and starts a new system thread.
-
.new
Used once to initialize the thread object representing the main thread of the process (that already exists).
Class Method Summary
-
.delay(backoff : Int32) : Int32
Delays execution for a brief moment.
- .each(&)
- .init : Nil
- .lock : Nil
-
.name=(name : String) : String
Changes the name of the current thread.
-
.sleep(time : Time::Span) : Nil
Blocks the current thread for the duration of time.
- .start_world : Nil
- .stop_world : Nil
- .unlock : Nil
- .unsafe_each(&)
-
.yield : Nil
Yields the currently running thread.
Instance Method Summary
-
#current_fiber : Fiber
Returns the Fiber currently running on the thread.
-
#current_fiber=(current_fiber : Fiber)
Returns the Fiber currently running on the thread.
-
#current_fiber? : Fiber | Nil
Returns the Fiber currently running on the thread.
-
#gc_thread_handler : Pointer(Void)
Holds the GC thread handler
-
#gc_thread_handler=(gc_thread_handler : Pointer(Void))
Holds the GC thread handler
-
#inspect(io : IO) : Nil
Appends a String representation of this object which includes its class name, its object address and the values of all instance variables.
-
#internal_name=(name : String)
Changes the Thread#name property but doesn't update the system name.
-
#join : Nil
Suspends the current thread until this thread terminates.
-
#main_fiber : Fiber
Returns the Fiber representing the thread's main stack.
-
#main_fiber? : Fiber | Nil
Returns the Fiber representing the thread's main stack.
- #name : String | Nil
- #resume : Nil
- #suspend : Nil
-
#to_s(io : IO) : Nil
Appends a short String representation of this object which includes its class name and its object address.
- #wait_suspended : Nil
Instance methods inherited from module Crystal::System::Thread
to_unsafe
to_unsafe
Class methods inherited from module Crystal::System::Thread
current_handle : Handle
current_handle,
current_thread : ::Thread
current_thread,
current_thread=(current_thread : ::Thread)
current_thread=,
current_thread? : ::Thread | Nil
current_thread?,
init : Nil
init,
init_suspend_resume : Nil
init_suspend_resume,
sig_resume : ::Signal
sig_resume,
sig_suspend : ::Signal
sig_suspend,
sleep(time : ::Time::Span) : Nil
sleep,
thread_proc(data : Pointer(Void)) : Pointer(Void)
thread_proc,
yield_current : Nil
yield_current
Instance methods inherited from class Reference
==(other : self)==(other : JSON::Any)
==(other : YAML::Any)
==(other) ==, dup dup, hash(hasher) hash, initialize initialize, inspect(io : IO) : Nil inspect, object_id : UInt64 object_id, pretty_print(pp) : Nil pretty_print, same?(other : Reference) : Bool
same?(other : Nil) same?, to_s(io : IO) : Nil to_s
Constructor methods inherited from class Reference
new
new,
unsafe_construct(address : Pointer, *args, **opts) : self
unsafe_construct
Class methods inherited from class Reference
pre_initialize(address : Pointer)
pre_initialize
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?(collection : Object) : Bool
in?(*values : Object) : Bool in?, inspect(io : IO) : Nil
inspect : String inspect, is_a?(type : Class) : Bool is_a?, itself itself, nil? : Bool nil?, not_nil!(message)
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) : Nil
to_json : String to_json, to_pretty_json(indent : String = " ") : String
to_pretty_json(io : IO, indent : String = " ") : Nil to_pretty_json, to_s(io : IO) : Nil
to_s : String to_s, to_yaml(io : IO) : Nil
to_yaml : String to_yaml, try(&) try, unsafe_as(type : T.class) forall T unsafe_as
Class methods inherited from class Object
from_json(string_or_io : String | IO, root : String)from_json(string_or_io : String | IO) from_json, from_yaml(string_or_io : String | IO) from_yaml
Macros inherited from class Object
class_getter(*names, &block)
class_getter,
class_getter!(*names)
class_getter!,
class_getter?(*names, &block)
class_getter?,
class_property(*names, &block)
class_property,
class_property!(*names)
class_property!,
class_property?(*names, &block)
class_property?,
class_setter(*names)
class_setter,
def_clone
def_clone,
def_equals(*fields)
def_equals,
def_equals_and_hash(*fields)
def_equals_and_hash,
def_hash(*fields)
def_hash,
delegate(*methods, to object)
delegate,
forward_missing_to(delegate)
forward_missing_to,
getter(*names, &block)
getter,
getter!(*names)
getter!,
getter?(*names, &block)
getter?,
property(*names, &block)
property,
property!(*names)
property!,
property?(*names, &block)
property?,
setter(*names)
setter
Constructor Detail
Returns the Thread object associated to the running system thread.
Creates and starts a new system thread.
Used once to initialize the thread object representing the main thread of the process (that already exists).
Class Method Detail
Blocks the current thread for the duration of time. Clock precision is dependent on the operating system and hardware.
Instance Method Detail
Returns the Fiber currently running on the thread.
Holds the GC thread handler
Appends a String representation of this object which includes its class name, its object address and the values of all instance variables.
class Person
def initialize(@name : String, @age : Int32)
end
end
Person.new("John", 32).inspect # => #<Person:0x10fd31f20 @name="John", @age=32>
Changes the Thread#name property but doesn't update the system name. Useful on the main thread where we'd change the process name (e.g. top, ps, ...).
Returns the Fiber representing the thread's main stack.
Appends a short String representation of this object which includes its class name and its object address.
class Person
def initialize(@name : String, @age : Int32)
end
end
Person.new("John", 32).to_s # => #<Person:0x10a199f20>