The only real threads in perl

Edit Package perl-Coro
https://metacpan.org/release/Coro

This module collection manages continuations in general, most often in the form of cooperative threads (also called coros, or simply "coro" in the documentation). They are similar to kernel threads but don't (in general) run in parallel at the same time even on SMP machines. The specific flavor of thread offered by this module also guarantees you that it will not switch between threads unless necessary, at easily-identified points in your program, so locking and parallel access are rarely an issue, making thread programming much safer and easier than using other thread models.

Unlike the so-called "Perl threads" (which are not actually real threads but only the windows process emulation (see section of same name for more details) ported to UNIX, and as such act as processes), Coro provides a full shared address space, which makes communication between threads very easy. And coro threads are fast, too: disabling the Windows process emulation code in your perl and using Coro can easily result in a two to four times speed increase for your programs. A parallel matrix multiplication benchmark (very communication-intensive) runs over 300 times faster on a single core than perls pseudo-threads on a quad core using all four cores.

Coro achieves that by supporting multiple running interpreters that share data, which is especially useful to code pseudo-parallel processes and for event-based programming, such as multiple HTTP-GET requests running concurrently. See Coro::AnyEvent to learn more on how to integrate Coro into an event-based environment.

In this module, a thread is defined as "callchain + lexical variables + some package variables + C stack), that is, a thread has its own callchain, its own set of lexicals and its own set of perls most important global variables (see Coro::State for more configuration and background info).

Refresh
Refresh
Source Files
Filename Size Changed
Coro-6.57.tar.gz 0000198128 193 KB
cpanspec.yml 0000000841 841 Bytes
perl-Coro.changes 0000000158 158 Bytes
perl-Coro.spec 0000004229 4.13 KB
Latest Revision
Dirk Stoecker's avatar Dirk Stoecker (dstoecker) accepted request 848352 from Dan Čermák's avatar Dan Čermák (dancermak) (revision 1)
Submission of Coro which is a dependency of Perl-LanguageServer
Comments 0
openSUSE Build Service is sponsored by