ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Coro/Coro.pm
(Generate patch)

Comparing Coro/Coro.pm (file contents):
Revision 1.248 by root, Mon Dec 15 15:03:31 2008 UTC vs.
Revision 1.249 by root, Mon Dec 15 15:21:25 2008 UTC

40points in your program, so locking and parallel access are rarely an 40points in your program, so locking and parallel access are rarely an
41issue, making thread programming much safer and easier than using other 41issue, making thread programming much safer and easier than using other
42thread models. 42thread models.
43 43
44Unlike the so-called "Perl threads" (which are not actually real threads 44Unlike the so-called "Perl threads" (which are not actually real threads
45but only the windows process emulation ported to unix), Coro provides a 45but only the windows process emulation ported to unix, and as such act
46full shared address space, which makes communication between threads 46as processes), Coro provides a full shared address space, which makes
47very easy. And threads are fast, too: disabling the Windows process 47communication between threads very easy. And Coro's threads are fast,
48emulation code in your perl and using Coro can easily result in a two to 48too: disabling the Windows process emulation code in your perl and using
49four times speed increase for your programs. 49Coro can easily result in a two to four times speed increase for your
50programs. A parallel matrix multiplication benchmark runs over 300 times
51faster on a single core than perl's pseudo-threads on a quad core using
52all four cores.
50 53
51Coro achieves that by supporting multiple running interpreters that share 54Coro achieves that by supporting multiple running interpreters that share
52data, which is especially useful to code pseudo-parallel processes and 55data, which is especially useful to code pseudo-parallel processes and
53for event-based programming, such as multiple HTTP-GET requests running 56for event-based programming, such as multiple HTTP-GET requests running
54concurrently. See L<Coro::AnyEvent> to learn more on how to integrate Coro 57concurrently. See L<Coro::AnyEvent> to learn more on how to integrate Coro
55into an event-based environment. 58into an event-based environment.
56 59
57In this module, a thread is defined as "callchain + lexical variables + 60In this module, a thread is defined as "callchain + lexical variables +
58@_ + $_ + $@ + $/ + C stack), that is, a thread has its own callchain, 61some package variables + C stack), that is, a thread has its own callchain,
59its own set of lexicals and its own set of perls most important global 62its own set of lexicals and its own set of perls most important global
60variables (see L<Coro::State> for more configuration and background info). 63variables (see L<Coro::State> for more configuration and background info).
61 64
62See also the C<SEE ALSO> section at the end of this document - the Coro 65See also the C<SEE ALSO> section at the end of this document - the Coro
63module family is quite large. 66module family is quite large.

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines