[sr-dev] Thread safety of global variables used in app_perl

Daniel-Constantin Mierla miconda at gmail.com
Thu Oct 13 22:26:42 CEST 2016


Hello,

is it about a global variable defined inside the perl script or you mean
kamailio.cfg variables? The terminology you used might be clear for Perl
guys, but as I am not one, I want to clarify it...

As generic remarks -- kamailio is multi-process application, so each
child is a process, not a thread. Each process has its own private
memory space, so a global kamailio.cfg variable such as $var(x) is
defined in each process and each process has access to the one specific
to it. There are shared memory variables, like $shv(z) that all
processes can access and change, requiring synchronization to avoid races.

Cheers,
Daniel


On 13/10/16 19:13, Alex Balashov wrote:
> Hi,
>
> Given the presence of a global (e.g. "our") package variable in an
> embedded Perl script used through app_perl, is there any implicit
> thread safety?
>
> That is to say, can a Perl function invoked by one SIP worker reset
> the value of a global while another instance of the function invoked
> by a different SIP worker is accessing it?
>
> And if so, is it safe to use generic perlthr locking to avoid this?
>
> Thanks!
>
> -- Alex
>

-- 
Daniel-Constantin Mierla
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
Kamailio Advanced Training, Berlin, Oct 24-26, 2016 - http://www.asipto.com




More information about the sr-dev mailing list