Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer

Re: Threads and fork and CLONE, oh my!

by Zaxo (Archbishop)
on Aug 12, 2005 at 03:33 UTC ( #483175=note: print w/replies, xml ) Need Help??

in reply to Threads and fork and CLONE, oh my!

Your description of Linux fork's copy-on-write of the child's environment is correct. That is one of tricks Linux uses to make its fork very fast and economical. It's good enough that there is rarely a reason to use threads on Linux, though they are supported by the kernel.

SYSV shared memory support is available, but most people prefer pipes or sockets for IPC on Linux.

After Compline,

Replies are listed 'Best First'.
Re^2: Threads and fork and CLONE, oh my!
by Anonymous Monk on Nov 15, 2005 at 14:03 UTC
    What was wrong with the UUID proposal? It sound like you abandoned that idea. I interpret it to mean create a scalar ref whose object is a unique number. Then, the dereferenced value, not the volatile address, becomes the object key. The UUID proposal would have much less overhead than having a CLONE method repair all the dangling links in each hash.

      I didn't spot anything wrong with it; I just didn't address that part of the problem.

      After Compline,

        I thought that if we got away from using the refaddr, we would solve the problem. Won't the following methodology work? Here is my attempt to create an alternate ID. I don't want to post the whole program inline; here are the changes.
        11c11,15 < *ID = \&Scalar::Util::refaddr; --- > sub ID ($) { > my ($self) = @_; > > return ref($self) ? $$self : ''; > } 28c32 < *{ $caller . '::ident' } = \&Scalar::Util::refaddr; --- > *{ $caller . '::ident' } = \&Class::Std::ID; 360a365,366 > my $count = 0; > 370a377 > $$new_obj = $count++; 512c519,523 < *ID = \&Scalar::Util::refaddr; --- > sub ID ($) { > my ($self) = @_; > > return ref($self) ? $$self : ''; > } 519a531 > $$new_obj = $count++;
        We won't care if the address of the anonymous hash changes; that is not the key. We have an alternate key that stays in tact. This is my first stab at it. When I made tried this on my Mac, I barfed on the coercions test.
        % make test PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_h +arness(0, 'blib/lib', 'blib/arch')" t/*.t t/00.load.........# Testing Class::Std v0.0.4 t/00.load.........ok + t/access..........ok + t/automethod......ok + t/coercions.......Deep recursion on anonymous subroutine at /Users/esh +arris/.cpan/build/Class-Std-0.0.4/blib/lib/Class/ line 14. Deep recursion on subroutine "Class::Std::ID" at (eval 26) line 3. t/coercions.......dubious + Test returned status 0 (wstat 11, 0xb) t/cumulative......ok + t/dump............ok + t/pod-coverage....skipped all skipped: Test::Pod::Coverage 1.04 required for testing POD + coverage t/pod.............skipped all skipped: Test::Pod 1.14 required for testing POD t/simple..........ok + Failed Test Stat Wstat Total Fail Failed List of Failed ---------------------------------------------------------------------- +--------- t/coercions.t 0 11 ?? ?? % ?? 2 tests skipped. Failed 1/9 test scripts, 88.89% okay. 0/152 subtests failed, 100.00% o +kay. make: *** [test_dynamic] Error 2
      I'm the anonymous monk.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://483175]
and !@monks...

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (3)
As of 2017-05-26 02:59 GMT
Find Nodes?
    Voting Booth?