Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

Comment on

( #3333=superdoc: print w/replies, xml ) Need Help??
I would try to avoid mixing threads and Win32::OLE, as I fear to omit relevant parts of the dance described in the documentation for Win32::OLE->Initialize().

I'm aware that running multiple instances of OLE in separate threads may not make for complete isolation even using require, but the failure appeared to be rooted entirely in Perl code rather than the underlying DLL's (which by default are initialised for multithreading).

Hence requireing it into each thread does appear to provide isolation at the perl level; at least as far as the few trivial tests I've done go. It certainly fixes up the free to wrong pool error that was the cause of his headline problem.

Over the years I've found several modules that "aren't threadsafe" work just fine if you require them into the thread where they are used rather than letting them be duplicated there at thread creation time. Usually I advocate only requiring them into a single thread, at which point they do not see any difference between being one thread is a multi threaded process and the only thread in a single threaded process; but in this case I thought I try requiring into multiple threads and it seems to work. (Maybe I should go back and try the same thing with some others; like Tk).

I guess we'll find out if the OP ever gets back to us.


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.

In reply to Re^5: WMI query with Threads by BrowserUk
in thread WMI query with Threads by vamsinm

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, 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, 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.
  • Log In?
    Username:
    Password:

    What's my password?
    Create A New User
    Chatterbox?
    [Corion]: ambrus: Yeah - I don't think the deep source dive will be necessary if things are implemented as simple as they could be :)) And hopefully I won't need (more) timely object destruction. I can update the screen at 60Hz and hopefully even do HTTP ...
    [Corion]: ... transfers in the background. Now that I think about it, this maybe even means that I can run the OpenGL filters on Youtube input :)
    [ambrus]: Corion: I mentioned that the unix event loop of Prima always wakes up at least once every 0.2 seconds. Have you found out whether the win32 event loop of Prima does that too?
    [Corion]: ambrus: Hmm - I would assume that the onDestroy message is sent from the destructor and doesn't go through the messageloop, but maybe it is sent when a window gets destroyed but all components are still alive...
    [ambrus]: Corion: partly deep source dive, partly just conservative coding even if it adds an overhead.
    [Corion]: ambrus: Hmm - no, I haven't looked at wakeup intervals ... I wonder why it should want to wakeup periodically because it gets a lot of messages from the Windows message loop (on Windows obviously)
    [ambrus]: (Alternately a deep source dive and then rewrite that event loop to make it better, and then as a bonus you get an idle method.)
    [ambrus]: The 0.2 seconds wakeup is likely a workaround for some bug, but I can't guess what bug that is.
    [ambrus]: It's been there since Prima 1.00 iirc
    [Corion]: Hmmm... Weird. Maybe it needs that for doing its timers or something. Still weird.

    How do I use this? | Other CB clients
    Other Users?
    Others examining the Monastery: (8)
    As of 2016-12-09 10:31 GMT
    Sections?
    Information?
    Find Nodes?
    Leftovers?
      Voting Booth?
      On a regular basis, I'm most likely to spy upon:













      Results (150 votes). Check out past polls.