Marc Lehmann > Coro-6.33 > Coro::MakeMaker

Download:
Coro-6.33.tar.gz

Dependencies

Annotate this POD

CPAN RT

New  2
Open  2
View/Report Bugs
Module Version: 6.33   Source   Latest Release: Coro-6.39

NAME ^

Coro::MakeMaker - MakeMaker glue for the XS-level Coro API

SYNOPSIS ^

This allows you to control coroutines from C/XS.

DESCRIPTION ^

For optimal performance, hook into Coro at the C-level. You'll need to make changes to your Makefile.PL and add code to your xs / c file(s).

WARNING ^

When you hook in at the C-level you can get a huge performance gain, but you also reduce the chances that your code will work unmodified with newer versions of perl or Coro. This may or may not be a problem. Just be aware, and set your expectations accordingly.

HOW TO ^

Makefile.PL

  use Coro::MakeMaker qw(coro_args);

  # ... set up %args ...

  WriteMakefile (coro_args (%args));

XS

  #include "CoroAPI.h"

  BOOT:
    I_CORO_API ("YourModule");

API

This is just a small overview - read the Coro/CoroAPI.h header file in the distribution, and check the examples in EV/ and Event/*, or as a more real-world example, the Deliantra game server (which uses Coro::MakeMaker).

 #define CORO_TRANSFER(prev,next) /* transfer from prev to next */
 #define CORO_SCHEDULE            /* like Coro::schedule */
 #define CORO_CEDE                /* like Coro::cede */
 #define CORO_CEDE_NOTSELF        /* like Coro::cede_notself */
 #define CORO_READY(coro)         /* like $coro->ready */
 #define CORO_IS_READY(coro)      /* like $coro->is_ready */
 #define CORO_NREADY              /* # of procs in ready queue */
 #define CORO_CURRENT             /* returns $Coro::current */
 #define CORO_THROW               /* exception pending? */
 #define CORO_READYHOOK           /* hook for event libs, see Coro::EV */

 #define CORO_SV_STATE(coro)      /* returns the internal struct coro * */
 #define CORO_EXECUTE_SLF(cv,init,ax) /* execute a schedule-like function */
 #define CORO_EXECUTE_SLF_XS(init) /* SLF in XS, see e.g. Coro::EV */
syntax highlighting: