Support for threads needs to be built into the Perl executable.
The pragma threads
implements thread objects and the necessary operations for threads. Some of the most relevant operations are:
Starts a thread to execute the block. Returns the thread object.
threads->create(
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->list
Returns a list of joinable threads.
threads->self
Returns an object representing the current thread.
threads->tid
Returns the thread ID of the current thread.
threads->yield
The current thread gives up the CPU in favor of other threads.
thread
objects support the several methods, including:
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.
,
] variable, timeLike cond_wait, but times out at the indicated time.
,
] variableWaits for another thread to signal (cond_signal or cond_broadcast) the variable. variable must be locked and will be temporarily unlocked while waiting. With condvar, unlocks variable while waiting for a signal for condvar.
Checks if the specified variable is shared.
Locks a shared variable against concurrent access. The lock is automatically released when it goes out of scope.
Marks the variable as shared.
Takes a reference, and returns a shared version of its argument.