Re: perl_alloc or perl_clone?

[email protected] (Stas Bekman)
Newsgroups perl.ithreads
Organization Hope, Humanized
Message-ID <[email protected]>
JD Brennan wrote:
> Currently, I'm doing:
> 
>  char *args[]  = { "jperl", perlfile };
>  int  argcount = 2;
> 
>  PerlInterpreter* my_perl = perl_alloc();
>  PERL_SET_CONTEXT(my_perl);
>  perl_construct(my_perl);
> 
>  PERL_SET_CONTEXT(my_perl);
>  int status = perl_parse(my_perl, xs_init, argcount, args, NULL);
>  ...
>  PERL_SET_CONTEXT(my_perl);
>  // Fill up Parse and Perl DS conversion code here
>  PL_PARSE_ARGS;
> 
>  int count = perl_call_pv(fname, G_ARRAY | G_EVAL);
>  SPAGAIN;
>  ...
> 
> Doesn't seem like the subsequent PERL_SET_CONTEXT() calls
> are needed since I'm using one PerlInterpreter* per pthread.
> Once I've set it into my thread's context, then it shouldn't
> change, right?

It's true that you need to have it set only once in the above code. 
However, you don't show how other pthreads set the perl interpreter.

> Doesn't seem like the dTHX and aTHX add anything. From looking 
> at the macro expansion they just create another local variable
> of type PerlInterpreter*.  Is that important?

It's important if you want your application to work with and w/o ithreaded 
perl. So it compiles with either of the two.

>>     dTHX;
>>     PerlInterpreter *one_perl = perl_alloc();
> 
>  ...
> 
>>     aTHX = one_perl;
>>     PERL_SET_CONTEXT(aTHX);
> 
> 
> Thanks a bunch!
> JD


-- 
_____________________________________________________________
Stas Bekman mailto:[email protected]  http://stason.org/
MailChannels: Assured Messaging(TM) http://mailchannels.com/
The "Practical mod_perl" book       http://modperlbook.org/
http://perl.apache.org/ http://perl.org/ http://logilune.com/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.