<?xml version="1.0" encoding="windows-1252"?>
<node id="181941" title="Re: Re: Status and usefulness of ithreads in 5.8.0" created="2002-07-15 18:08:40" updated="2005-07-01 06:14:37">
<type id="11">
note</type>
<author id="59600">
BrentDax</author>
<data>
<field name="doctext">
&lt;blockquote&gt;&lt;i&gt;Threads mangle each others variables by default, and you need to explicitely guard yourself against that from happening. (Note that just *looking* at a variable can mean Perl changes the variable under the hood - it's not a safe operation.) fork is safe for your data, you need to explicitely share data (using shared memory for instance).&lt;/i&gt;&lt;/blockquote&gt;
&lt;p&gt;
Not true.  Variables under ithreads (what &lt;i&gt;threads.pm&lt;/i&gt; implements) need explicit sharing.  (You do this by saying  &lt;code&gt;my $variable : shared&lt;/code&gt;.)  The difference is that Perl still manages your variables, so you don't have the problems inherent in using normal Unix IPC (such as it not meshing well with Perl).
&lt;p&gt;
&lt;blockquote&gt;&lt;i&gt;Do you know which thread is going to handle a send signal? On any signal capable OS? I know when I fork(). &lt;/i&gt;&lt;/blockquote&gt;
&lt;p&gt;
I'm not sure about this, but I think Perl 5.8's new safe signals have a way to deal with this.
&lt;P&gt;=cut&lt;BR&gt;
--Brent Dax&lt;BR&gt;
There is no sig.</field>
<field name="root_node">
181655</field>
<field name="parent_node">
181723</field>
</data>
</node>
