Well... I'll have to admit that I don't know the fundamental problem here, only the observed behaviour. I wrote some fork code that pinged a few thousand machines. When the pings timed out it appeared to be a blocking operation, since no other pings would occur until the timeout expired (i.e. the pings on other forked threads would just pause).

I tested the code on Linux and it worked perfectly, however on Win32 this blocking occurred, and the script was no quicker than a series of sequential pings. The advice I got at the time was that it was due to the way Net::Ping implemented its ICMP echo send/receive process.

The post by meetraz in this thread seems to contradict this theory, as it uses threads and Net::Ping. So the bottom line is that I don't know and would love for someone to conclusively explain it!

I'd prefer not to use Cygwin when I can use ActivePerl. Cygwin has its uses, but I prefer using a 'pure' Win32 version of Perl on Win32 :) I do have a Linux box I could run this on, however I find it easier to access SMB shares via UNC from Win32. But that's going to be the subject of my next post...

Cheers,

Gordon.


In reply to Re: Re: Re: Re: Non-blocking pings on Win32 by TheFluffyOne
in thread Non-blocking pings on Win32 by TheFluffyOne

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



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.