in reply to Re^7: Utter FUD!
in thread is ||= threadsafe?
Err, you are using alias there in a completely different sense than it is usually used in perl
From shared.xs:
* Shared scalar (my $s : shared): * * SV = PVMG(0x7ba238) at 0x7387a8 * FLAGS = (PADMY,GMG,SMG) * MAGIC = 0x824d88 * MG_TYPE = PERL_MAGIC_shared_scalar(n) * MG_PTR = 0x810358 <<<< pointer to the shared SV
No data is stored in the alias, it is just a pointer (with some attached magic), to the actual SV containing the data. That's a little fatter than a RV used for aliasing, but not much.
In the sense tye was talking about, which has nothing to do with where a thread starts running, threads emulate fork
A few extracts from the wikipedia page:
No new process is involved.
$$ returns the same value in all threads.
No separate address space is involved.
Not everything is copied. For example, lexicals are not cloned unless they are closed over by the thread sub.
Data in shared scalars are not copied, another alias to it is created.
You might just as well say that forking emulates spawning a thread. After all, fork does spawn a thread. They obviously have similarities, but that's the nature of the beast. But they also have differences.
So no. Spawning an iThread is not exactly the same as spawning a thread in C or assembler. But then spawning a thread in Java, (or Python or Ruby, or LUA or Clean or Pure or O'Caml or OZ or ... ) is not the same as in C either.
Likewise, Perl's arrays are slower and heavier than C's. In the same way as you don't have direct access to shared memory; you don't have direct access to integers floats or strings in Perl. You go through a layer of Perl internals code to get to both. And you reap the benefits from doing so, from both.
Perl's built-in fork emulates *nix fork on Win32 (and OS/2,); threads->new() does not emulate fork. It just does some things that are similar.
Tye's statement has little technical merit, but a lot of political intent.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^9: Utter FUD!
by ysth (Canon) on Oct 26, 2010 at 23:15 UTC | |
by BrowserUk (Patriarch) on Oct 27, 2010 at 06:50 UTC | |
by ysth (Canon) on Oct 27, 2010 at 07:47 UTC | |
by BrowserUk (Patriarch) on Oct 27, 2010 at 08:14 UTC | |
by ysth (Canon) on Oct 27, 2010 at 15:23 UTC | |
| |
by BrowserUk (Patriarch) on Oct 27, 2010 at 08:04 UTC | |
by ikegami (Patriarch) on Oct 27, 2010 at 07:25 UTC | |
by BrowserUk (Patriarch) on Oct 27, 2010 at 07:37 UTC | |
by ikegami (Patriarch) on Oct 28, 2010 at 00:03 UTC | |
|