NAME
XS::Framework::Manual::SVAPI::threads - XS::Framework THREADED Perl support
THREADED Perl support
XS::Framework
strictly sets PERL_NO_GET_CONTEXT
option so that you need to have my_perl
(aTHX
) in scope. This way threaded perl works faster.
XS::Framework
concept is all about sharing C code, modules that use XS::Framework cannot have different PERL_NO_GET_CONTEXT
state. Because in either case, binary incompability between function signatures would occur.
To help dealing with threaded perls XS::Framework
defines my_perl alias at global scope, so you could get rid of annoing pTHX
and aTHX
in every C function.
This alias resolves to appropriate perl interpreter pointer in such a way that it costs almost nothing until you create second thread. This is in contrast to perl's default dTHX
or PERL_GET_THX
which are relatively expensive at C-speeds. After second thread is created, the alias reverts to PERL_GET_THX
speeds.
Keep in mind that threaded perl will definitely be slower than standart perl even if you don't create threads because of penalties in perl source code itself. Penalties are usually 20-50% so i would not recommend using threaded perl unless you *really* need perl threads.
Keep in mind that if you call functions with pTHX
in theirs signature or call perl functions (not macros, for example Perl_* functions) you still need to pass aTHX
manually. However the speedups covered above still apply to aTHX
.