Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

comment on

( [id://3333]=superdoc: print w/replies, xml ) Need Help??

There are two problems with the idea.

  1. I've never managed to work out how to use the value returned from _handle().

    It appears to be returned in the IV slot of the SV:

    SV = IV(0x3afb470) at 0x3afb478 REFCNT = 1 FLAGS = (PADMY,IOK,pIOK) IV = 94514760

    but all my attempts to use it from XS in calls to the OS result in The handle is invalid.

  2. Terminating threads is a desperate measure as it does not allow either the thread itself, the OS, or Perl to clean up after themselves, leading to a massive memory leak. Not to mention the potential for all sorts of nasties with dangling pointers etc.

    If you bypass the first problem by calling an XS sub that gets the current thread handle from the OS -- which isn't very useful as it can only be called from within the thread to be killed -- and run a loop that creates threads and has them self terminate, then you see the scope of the massive memory leak it creates:

    #! perl -slw use strict; use Inline C => Config => BUILD_NOISY => 1; use Inline C => <<'END_C', NAME => 'TerminateThreadTest', CLEAN_AFTER +_BUILD => 0; int killThread( SV *t, SV *ec ) { printf( "t:%p ec:%d\n", SvIV( t ), SvIV( ec ) ); return TerminateThread( SvIV( t ), SvIV( ec ) ); } void hariKari( SV *exitCode ) { TerminateThread( GetCurrentThread(), SvIV( exitCode ) ); } END_C use Devel::Peek; use threads; for( 1 .. 100 ) { my $t = async { sleep 5; hariKari( 12345 ); }; sleep 10; }

On my system, the above script leaks around 2MB for every thread killed. Whilst that could be reduce by spawning early and trimming the stack etc., it will never be zero.


With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.

The start of some sanity?


In reply to Re^4: Locked threads and tcp timeouts by BrowserUk
in thread Locked threads and tcp timeouts by menth0l

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":



  • Are you posting in the right place? Check out Where do I post X? to know for sure.
  • Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
    <code> <a> <b> <big> <blockquote> <br /> <dd> <dl> <dt> <em> <font> <h1> <h2> <h3> <h4> <h5> <h6> <hr /> <i> <li> <nbsp> <ol> <p> <small> <strike> <strong> <sub> <sup> <table> <td> <th> <tr> <tt> <u> <ul>
  • Snippets of code should be wrapped in <code> tags not <pre> tags. In fact, <pre> tags should generally be avoided. If they must be used, extreme care should be taken to ensure that their contents do not have long lines (<70 chars), in order to prevent horizontal scrolling (and possible janitor intervention).
  • Want more info? How to link or How to display code and escape characters are good places to start.
Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others goofing around in the Monastery: (3)
As of 2024-03-29 05:05 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found