NAME
Coro::MakeMaker - MakeMaker glue for the C-level Coro API
SYNOPSIS
This allows you to control coroutines from C level.
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 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
/* perl-related */
#define TRANSFER_SAVE_DEFAV /* save @_ */
#define TRANSFER_SAVE_DEFSV /* save $_ */
#define TRANSFER_SAVE_ERRSV /* save $@ */
#define TRANSFER_SAVE_ALL ( TRANSFER_SAVE_DEFAV \
| TRANSFER_SAVE_DEFSV \
| TRANSFER_SAVE_ERRSV)
#define CORO_TRANSFER(prev,next,flags) /* transfer from prev to next */
#define CORO_SCHEDULE /* like Coro::schedule */
#define CORO_CEDE /* like Coro::cede */
#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 */