Support for threads needs to be built into the Perl executable.
The pragma threads
implements thread objects and the necessary operations for threads:
Starts a thread to execute the block. Returns the thread object.
threads->list
Returns a list of joinable threads.
threads->new
(sub [ ,
args ])Creates a new thread that starts executing in the referenced subroutine. The args are passed to this subroutine. Returns the thread object.
threads->self
Returns an object representing the current thread.
threads->yield
The current thread gives up the CPU in favor of other threads.
thread
objects support the following methods:
Detaches a thread so it runs independently.
Returns true if the thread and thread are the same thread. You can also compare thread objects directly, using the ==
operator.
Waits for the thread to complete. The value returned is the return value from the thread’s subroutine.
Returns the thread id of a thread.
The pragma threads::shared
implements operations that enable variable sharing across threads:
Unblocks all threads waiting for this variable. variable must be locked.
Unblocks one thread that is waiting for this variable. variable must be locked.
Waits for another thread to issue a cond_signal or cond_broadcast on the variable. variable must be locked and will be temporarily unlocked while waiting.
Locks a shared variable against concurrent access. The lock is automatically released when it goes out of scope.
Marks the variable as shared.