|
The Thread Library
The Thread library allows concurrent programming in Ruby.
It provides multiple threads of control that execute concurrently
sharing same memory space. The Ruby interpreter executes threads by
time-sharing, therefore using threads never makes program run faster
(even much slower for the cost of context switching).
The thread which created first when the Ruby process started, is
called the main thread. When the main thread is terminated for some
reason, all other threads will be terminated, and the whole process
will be terminated. The exception raised by the user interrupt is
delivered to the main thread.
The Thread library is optional, and may not be available
on some Ruby interpreter, which thread feature is disabled by the
compile time configuration.
-
Thread
-
The Thread class represents user-level threads.
Threads terminates when the execution of the given iterater block
returns, normally or by raisung an exception.
-
SuperClass:
-
- Object
-
Class Methods:
-
-
abort_on_exception
-
Returns the value of the abort flag.
-
abort_on_exception=(yes_no)
-
Sets the value of the flag to abort the interpreter if any unhandled exception
terminates any thread.
-
current
-
Returns the current thread object which calls the method.
-
exit
-
Terminates the current thread.
-
kill(thread)
-
Terminates the specified thread.
-
new {...}
-
-
start {...}
-
-
fork {...}
-
Creates a new thread of contorl, then starts evaluating the block
concurrently. Returns a newly created thread object.
-
pass
-
Gives other runnable threads chance to run.
-
stop
-
Suspends the current thread until another thread resumes it using
run method.
-
Methods:
-
-
self[name]
-
Retrieves thread local data associated with name. The
name is either string or symbol.
-
self[name]=val
-
Stores val into the thread local dictionary, associating
with name. The name is either string or symbol.
-
abort_on_exception
-
Returns the value of the abort flag of the thread.
-
abort_on_exception=(yes_no)
-
Sets the value of the flag to abort the interpreter if any unhandled exception
terminates the thread.
-
alive?
-
-
status
-
Returns true if the thread is alive. Returns false for
normal termination, nil for termination by exception.
-
exit
-
Terminates the thread.
-
join
-
Suspends the current thread until the thread has terminated.
-
raise([error_type,][message][,traceback])
-
Raises an exception on the thread.
-
run
-
Resumes the thread. It does nothing if the thread was not suspended.
-
stop?
-
Returns true if the thread is stopped.
-
value
-
Waits for the thread to terminate and returns the evaluated value of
the block, which is given to the
Thread.create .
-
wakeup
-
Resumes the thread.
-
Mutex
-
Mutexs (mutual-exclusion locks) are used to protect shared data
against concurrent accesses. The typical use is (where m
is the mutex object):
begin
m.lock
# critical section protected by m
ensure
m.unlock
end
or, in short
m.synchronize {
# critical section protected by m
}
-
SuperClass:
-
- Object
-
Class Methods:
-
-
new
-
Creates a new Mutex object.
-
Methods:
-
-
lock
-
Locks the mutex object. Only on thread at a time can lock the mutex.
A thread that attempts to lock a alread locked mutex will suspend
until the other thread unlocks the mutex.
-
locked?
-
Returns true if the mutex is locked.
-
synchronize
-
Locks the mutex, and evaluates the block. Ensures the mutex be
unlocked.
-
try_lock
-
Locks the mutex and returns true if the mutex is not locked. If the
mutex is already locked, just returns false.
-
unlock
-
Unlocks the mutex. Other thread suspended trying to lock the mutex
will be resumed.
-
Queue
-
The Queue is the FIFO (first in first out) communication
channel between threads. If a thread trys to read an empty queue, it
will be suspended until the queue is filled.
-
SuperClass:
-
- Object
-
Class Methods:
-
-
new
-
Creates a new queue object.
-
Methods:
-
-
empty?
-
Returns true if the queue is empty.
-
length
-
Returns the length of the queue.
-
pop [non_block]
-
Removes and returns an value from queue. If the queue is empty, the
calling thread will be suspended until some value pushed in the queue.
If optional argument non_block is non-nil, pop
raises an exception if no value available in the queue.
-
push(value)
-
Append an value to the queue. Restart the waiting thread
if any.
up
-
next
-
index
matz@netlab.co.jp
|