ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Coro/README
Revision: 1.17
Committed: Wed Nov 5 15:38:10 2008 UTC (15 years, 6 months ago) by root
Branch: MAIN
CVS Tags: rel-4_91, rel-4_9, rel-4_804, rel-4_901, rel-4_911, rel-4_912
Changes since 1.16: +18 -15 lines
Log Message:
4.804

File Contents

# User Rev Content
1 root 1.1 NAME
2     Coro - coroutine process abstraction
3    
4     SYNOPSIS
5 root 1.14 use Coro;
6    
7     async {
8     # some asynchronous thread of execution
9     print "2\n";
10     cede; # yield back to main
11     print "4\n";
12     };
13     print "1\n";
14     cede; # yield to coroutine
15     print "3\n";
16     cede; # and again
17    
18     # use locking
19 root 1.15 use Coro::Semaphore;
20 root 1.14 my $lock = new Coro::Semaphore;
21     my $locked;
22    
23     $lock->down;
24     $locked = 1;
25     $lock->up;
26 root 1.1
27     DESCRIPTION
28     This module collection manages coroutines. Coroutines are similar to
29 root 1.14 threads but don't (in general) run in parallel at the same time even on
30     SMP machines. The specific flavor of coroutine used in this module also
31     guarantees you that it will not switch between coroutines unless
32     necessary, at easily-identified points in your program, so locking and
33     parallel access are rarely an issue, making coroutine programming much
34     safer and easier than threads programming.
35    
36     Unlike a normal perl program, however, coroutines allow you to have
37     multiple running interpreters that share data, which is especially
38     useful to code pseudo-parallel processes and for event-based
39     programming, such as multiple HTTP-GET requests running concurrently.
40     See Coro::AnyEvent to learn more.
41    
42     Coroutines are also useful because Perl has no support for threads (the
43     so called "threads" that perl offers are nothing more than the (bad)
44     process emulation coming from the Windows platform: On standard
45     operating systems they serve no purpose whatsoever, except by making
46     your programs slow and making them use a lot of memory. Best disable
47     them when building perl, or aks your software vendor/distributor to do
48     it for you).
49 root 1.1
50     In this module, coroutines are defined as "callchain + lexical variables
51 root 1.5 + @_ + $_ + $@ + $/ + C stack), that is, a coroutine has its own
52     callchain, its own set of lexicals and its own set of perls most
53 root 1.12 important global variables (see Coro::State for more configuration).
54 root 1.1
55 root 1.14 $Coro::main
56     This variable stores the coroutine object that represents the main
57     program. While you cna "ready" it and do most other things you can
58     do to coroutines, it is mainly useful to compare again
59 root 1.15 $Coro::current, to see whether you are running in the main program
60     or not.
61 root 1.14
62     $Coro::current
63     The coroutine object representing the current coroutine (the last
64     coroutine that the Coro scheduler switched to). The initial value is
65     $main (of course).
66    
67     This variable is strictly *read-only*. You can take copies of the
68     value stored in it and use it as any other coroutine object, but you
69     must not otherwise modify the variable itself.
70    
71     $Coro::idle
72     This variable is mainly useful to integrate Coro into event loops.
73     It is usually better to rely on Coro::AnyEvent or L"Coro::EV", as
74     this is pretty low-level functionality.
75    
76     This variable stores a callback that is called whenever the
77     scheduler finds no ready coroutines to run. The default
78     implementation prints "FATAL: deadlock detected" and exits, because
79     the program has no other way to continue.
80    
81     This hook is overwritten by modules such as "Coro::Timer" and
82     "Coro::AnyEvent" to wait on an external event that hopefully wake up
83     a coroutine so the scheduler can run it.
84 root 1.1
85 root 1.14 Note that the callback *must not*, under any circumstances, block
86     the current coroutine. Normally, this is achieved by having an "idle
87     coroutine" that calls the event loop and then blocks again, and then
88     readying that coroutine in the idle handler.
89 root 1.4
90 root 1.14 See Coro::Event or Coro::AnyEvent for examples of using this
91     technique.
92 root 1.4
93     Please note that if your callback recursively invokes perl (e.g. for
94 root 1.12 event handlers), then it must be prepared to be called recursively
95     itself.
96 root 1.1
97 root 1.14 SIMPLE COROUTINE CREATION
98     async { ... } [@args...]
99     Create a new coroutine and return it's coroutine object (usually
100     unused). The coroutine will be put into the ready queue, so it will
101     start running automatically on the next scheduler run.
102 root 1.1
103 root 1.14 The first argument is a codeblock/closure that should be executed in
104     the coroutine. When it returns argument returns the coroutine is
105 root 1.1 automatically terminated.
106    
107 root 1.14 The remaining arguments are passed as arguments to the closure.
108    
109 root 1.10 See the "Coro::State::new" constructor for info about the coroutine
110 root 1.14 environment in which coroutines are executed.
111 root 1.10
112 root 1.7 Calling "exit" in a coroutine will do the same as calling exit
113     outside the coroutine. Likewise, when the coroutine dies, the
114     program will exit, just as it would in the main program.
115 root 1.3
116 root 1.14 If you do not want that, you can provide a default "die" handler, or
117     simply avoid dieing (by use of "eval").
118    
119     Example: Create a new coroutine that just prints its arguments.
120    
121 root 1.1 async {
122     print "@_\n";
123     } 1,2,3,4;
124    
125 root 1.6 async_pool { ... } [@args...]
126     Similar to "async", but uses a coroutine pool, so you should not
127 root 1.14 call terminate or join on it (although you are allowed to), and you
128     get a coroutine that might have executed other code already (which
129     can be good or bad :).
130    
131     On the plus side, this function is faster than creating (and
132 root 1.16 destroying) a completly new coroutine, so if you need a lot of
133 root 1.14 generic coroutines in quick successsion, use "async_pool", not
134     "async".
135 root 1.6
136 root 1.14 The code block is executed in an "eval" context and a warning will
137 root 1.6 be issued in case of an exception instead of terminating the
138     program, as "async" does. As the coroutine is being reused, stuff
139     like "on_destroy" will not work in the expected way, unless you call
140 root 1.14 terminate or cancel, which somehow defeats the purpose of pooling
141     (but is fine in the exceptional case).
142 root 1.6
143 root 1.14 The priority will be reset to 0 after each run, tracing will be
144 root 1.10 disabled, the description will be reset and the default output
145 root 1.14 filehandle gets restored, so you can change all these. Otherwise the
146     coroutine will be re-used "as-is": most notably if you change other
147 root 1.16 per-coroutine global stuff such as $/ you *must needs* revert that
148     change, which is most simply done by using local as in: "local $/".
149    
150     The idle pool size is limited to 8 idle coroutines (this can be
151     adjusted by changing $Coro::POOL_SIZE), but there can be as many
152     non-idle coros as required.
153 root 1.6
154     If you are concerned about pooled coroutines growing a lot because a
155     single "async_pool" used a lot of stackspace you can e.g.
156     "async_pool { terminate }" once per second or so to slowly replenish
157 root 1.9 the pool. In addition to that, when the stacks used by a handler
158 root 1.14 grows larger than 16kb (adjustable via $Coro::POOL_RSS) it will also
159     be destroyed.
160    
161     STATIC METHODS
162     Static methods are actually functions that operate on the current
163     coroutine.
164 root 1.6
165 root 1.1 schedule
166 root 1.14 Calls the scheduler. The scheduler will find the next coroutine that
167     is to be run from the ready queue and switches to it. The next
168     coroutine to be run is simply the one with the highest priority that
169     is longest in its ready queue. If there is no coroutine ready, it
170     will clal the $Coro::idle hook.
171    
172     Please note that the current coroutine will *not* be put into the
173     ready queue, so calling this function usually means you will never
174     be called again unless something else (e.g. an event handler) calls
175     "->ready", thus waking you up.
176    
177     This makes "schedule" *the* generic method to use to block the
178     current coroutine and wait for events: first you remember the
179     current coroutine in a variable, then arrange for some callback of
180     yours to call "->ready" on that once some event happens, and last
181     you call "schedule" to put yourself to sleep. Note that a lot of
182 root 1.15 things can wake your coroutine up, so you need to check whether the
183 root 1.14 event indeed happened, e.g. by storing the status in a variable.
184 root 1.4
185     The canonical way to wait on external events is this:
186    
187     {
188     # remember current coroutine
189     my $current = $Coro::current;
190    
191     # register a hypothetical event handler
192     on_event_invoke sub {
193     # wake up sleeping coroutine
194     $current->ready;
195     undef $current;
196     };
197    
198 root 1.8 # call schedule until event occurred.
199 root 1.4 # in case we are woken up for other reasons
200     # (current still defined), loop.
201     Coro::schedule while $current;
202     }
203 root 1.1
204     cede
205 root 1.4 "Cede" to other coroutines. This function puts the current coroutine
206 root 1.1 into the ready queue and calls "schedule", which has the effect of
207     giving up the current "timeslice" to other coroutines of the same or
208 root 1.14 higher priority. Once your coroutine gets its turn again it will
209     automatically be resumed.
210    
211     This function is often called "yield" in other languages.
212 root 1.1
213 root 1.6 Coro::cede_notself
214 root 1.14 Works like cede, but is not exported by default and will cede to
215     *any* coroutine, regardless of priority. This is useful sometimes to
216     ensure progress is made.
217 root 1.6
218 root 1.1 terminate [arg...]
219 root 1.4 Terminates the current coroutine with the given status values (see
220 root 1.1 cancel).
221    
222 root 1.10 killall
223     Kills/terminates/cancels all coroutines except the currently running
224     one. This is useful after a fork, either in the child or the parent,
225     as usually only one of them should inherit the running coroutines.
226    
227 root 1.14 Note that while this will try to free some of the main programs
228 root 1.15 resources, you cannot free all of them, so if a coroutine that is
229 root 1.14 not the main program calls this function, there will be some
230     one-time resource leak.
231 root 1.1
232 root 1.4 COROUTINE METHODS
233 root 1.14 These are the methods you can call on coroutine objects (or to create
234     them).
235 root 1.1
236     new Coro \&sub [, @args...]
237 root 1.14 Create a new coroutine and return it. When the sub returns, the
238 root 1.4 coroutine automatically terminates as if "terminate" with the
239     returned values were called. To make the coroutine run you must
240     first put it into the ready queue by calling the ready method.
241    
242 root 1.10 See "async" and "Coro::State::new" for additional info about the
243     coroutine environment.
244 root 1.4
245     $success = $coroutine->ready
246 root 1.14 Put the given coroutine into the end of its ready queue (there is
247     one queue for each priority) and return true. If the coroutine is
248     already in the ready queue, do nothing and return false.
249    
250     This ensures that the scheduler will resume this coroutine
251     automatically once all the coroutines of higher priority and all
252     coroutines of the same priority that were put into the ready queue
253     earlier have been resumed.
254 root 1.4
255     $is_ready = $coroutine->is_ready
256 root 1.15 Return whether the coroutine is currently the ready queue or not,
257 root 1.4
258     $coroutine->cancel (arg...)
259     Terminates the given coroutine and makes it return the given
260 root 1.6 arguments as status (default: the empty list). Never returns if the
261     coroutine is the current coroutine.
262 root 1.1
263 root 1.17 $coroutine->throw ([$scalar])
264     If $throw is specified and defined, it will be thrown as an
265     exception inside the coroutine at the next convenient point in time
266     (usually after it gains control at the next schedule/transfer/cede).
267     Otherwise clears the exception object.
268    
269     The exception object will be thrown "as is" with the specified
270     scalar in $@, i.e. if it is a string, no line number or newline will
271     be appended (unlike with "die").
272    
273     This can be used as a softer means than "cancel" to ask a coroutine
274     to end itself, although there is no guarantee that the exception
275     will lead to termination, and if the exception isn't caught it might
276     well end the whole program.
277    
278     You might also think of "throw" as being the moral equivalent of
279     "kill"ing a coroutine with a signal (in this case, a scalar).
280    
281 root 1.4 $coroutine->join
282 root 1.1 Wait until the coroutine terminates and return any values given to
283 root 1.10 the "terminate" or "cancel" functions. "join" can be called
284 root 1.14 concurrently from multiple coroutines, and all will be resumed and
285     given the status return once the $coroutine terminates.
286 root 1.1
287 root 1.6 $coroutine->on_destroy (\&cb)
288     Registers a callback that is called when this coroutine gets
289     destroyed, but before it is joined. The callback gets passed the
290 root 1.14 terminate arguments, if any, and *must not* die, under any
291     circumstances.
292 root 1.6
293 root 1.4 $oldprio = $coroutine->prio ($newprio)
294 root 1.1 Sets (or gets, if the argument is missing) the priority of the
295 root 1.4 coroutine. Higher priority coroutines get run before lower priority
296     coroutines. Priorities are small signed integers (currently -4 ..
297 root 1.1 +3), that you can refer to using PRIO_xxx constants (use the import
298     tag :prio to get then):
299    
300     PRIO_MAX > PRIO_HIGH > PRIO_NORMAL > PRIO_LOW > PRIO_IDLE > PRIO_MIN
301     3 > 1 > 0 > -1 > -3 > -4
302    
303     # set priority to HIGH
304     current->prio(PRIO_HIGH);
305    
306     The idle coroutine ($Coro::idle) always has a lower priority than
307     any existing coroutine.
308    
309 root 1.4 Changing the priority of the current coroutine will take effect
310     immediately, but changing the priority of coroutines in the ready
311 root 1.1 queue (but not running) will only take effect after the next
312 root 1.4 schedule (of that coroutine). This is a bug that will be fixed in
313     some future version.
314 root 1.1
315 root 1.4 $newprio = $coroutine->nice ($change)
316 root 1.1 Similar to "prio", but subtract the given value from the priority
317     (i.e. higher values mean lower priority, just as in unix).
318    
319 root 1.4 $olddesc = $coroutine->desc ($newdesc)
320 root 1.1 Sets (or gets in case the argument is missing) the description for
321 root 1.4 this coroutine. This is just a free-form string you can associate
322     with a coroutine.
323    
324 root 1.10 This method simply sets the "$coroutine->{desc}" member to the given
325     string. You can modify this member directly if you wish.
326    
327 root 1.5 GLOBAL FUNCTIONS
328     Coro::nready
329     Returns the number of coroutines that are currently in the ready
330 root 1.14 state, i.e. that can be switched to by calling "schedule" directory
331     or indirectly. The value 0 means that the only runnable coroutine is
332     the currently running one, so "cede" would have no effect, and
333     "schedule" would cause a deadlock unless there is an idle handler
334     that wakes up some coroutines.
335 root 1.5
336 root 1.6 my $guard = Coro::guard { ... }
337     This creates and returns a guard object. Nothing happens until the
338 root 1.7 object gets destroyed, in which case the codeblock given as argument
339 root 1.6 will be executed. This is useful to free locks or other resources in
340     case of a runtime error or when the coroutine gets canceled, as in
341     both cases the guard block will be executed. The guard object
342     supports only one method, "->cancel", which will keep the codeblock
343     from being executed.
344    
345     Example: set some flag and clear it again when the coroutine gets
346     canceled or the function returns:
347    
348     sub do_something {
349     my $guard = Coro::guard { $busy = 0 };
350     $busy = 1;
351    
352     # do something that requires $busy to be true
353     }
354    
355 root 1.4 unblock_sub { ... }
356     This utility function takes a BLOCK or code reference and "unblocks"
357 root 1.14 it, returning a new coderef. Unblocking means that calling the new
358     coderef will return immediately without blocking, returning nothing,
359     while the original code ref will be called (with parameters) from
360     within another coroutine.
361 root 1.4
362 root 1.8 The reason this function exists is that many event libraries (such
363 root 1.4 as the venerable Event module) are not coroutine-safe (a weaker form
364     of thread-safety). This means you must not block within event
365 root 1.14 callbacks, otherwise you might suffer from crashes or worse. The
366     only event library currently known that is safe to use without
367     "unblock_sub" is EV.
368 root 1.4
369     This function allows your callbacks to block by executing them in
370     another coroutine where it is safe to block. One example where
371     blocking is handy is when you use the Coro::AIO functions to save
372 root 1.14 results to disk, for example.
373 root 1.4
374     In short: simply use "unblock_sub { ... }" instead of "sub { ... }"
375     when creating event callbacks that want to block.
376 root 1.1
377 root 1.14 If your handler does not plan to block (e.g. simply sends a message
378     to another coroutine, or puts some other coroutine into the ready
379     queue), there is no reason to use "unblock_sub".
380    
381     Note that you also need to use "unblock_sub" for any other callbacks
382     that are indirectly executed by any C-based event loop. For example,
383     when you use a module that uses AnyEvent (and you use
384     Coro::AnyEvent) and it provides callbacks that are the result of
385     some event callback, then you must not block either, or use
386     "unblock_sub".
387    
388 root 1.1 BUGS/LIMITATIONS
389 root 1.14 This module is not perl-pseudo-thread-safe. You should only ever use
390     this module from the same thread (this requirement might be removed in
391     the future to allow per-thread schedulers, but Coro::State does not yet
392     allow this). I recommend disabling thread support and using processes,
393     as this is much faster and uses less memory.
394 root 1.1
395     SEE ALSO
396 root 1.14 Event-Loop integration: Coro::AnyEvent, Coro::EV, Coro::Event.
397 root 1.12
398     Debugging: Coro::Debug.
399    
400     Support/Utility: Coro::Specific, Coro::Util.
401 root 1.2
402     Locking/IPC: Coro::Signal, Coro::Channel, Coro::Semaphore,
403     Coro::SemaphoreSet, Coro::RWLock.
404    
405 root 1.14 IO/Timers: Coro::Timer, Coro::Handle, Coro::Socket, Coro::AIO.
406    
407     Compatibility: Coro::LWP, Coro::BDB, Coro::Storable, Coro::Select.
408 root 1.12
409 root 1.14 XS API: Coro::MakeMaker.
410 root 1.2
411 root 1.14 Low level Configuration, Coroutine Environment: Coro::State.
412 root 1.1
413     AUTHOR
414     Marc Lehmann <schmorp@schmorp.de>
415     http://home.schmorp.de/
416