Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

Re^3: Hang on STDOUT

by BrowserUk (Pope)
on Jul 02, 2015 at 14:09 UTC ( #1132987=note: print w/replies, xml ) Need Help??


in reply to Re^2: Hang on STDOUT
in thread Hang on STDOUT

it is possible that two different threads might try to write to STDERR

If you're not using locking on global handles that can be used from multiple threads, you should be.

Ie.

use threads::shared; ... my $sem :shared; ... { # some scope (as tight as possible) lock $sem; print ...; }

Or better:

use threads::shared; my $semSO :shared; sub tprint { lock $sem; print @_; } sub tprintf { lock $sem; printf @_; } my $semSE :shared; sub twarn{ lock $semSE; print STDERR @_; } sub twarnf{ lock $semSE; printf STDERR @_; } ... tprint( $some, "Stuff" ); ... else twarnf( "%u %s\n", $this, $that );

You might also consider using just one semaphore for both stdout and stderr if the are habitually directed to the same place.

Not saying this will fix your (exceptionally vaguely described) problem; but at least it will be one possibility removed from consideration.


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.
I'm with torvalds on this Agile (and TDD) debunked I told'em LLVM was the way to go. But did they listen!

Replies are listed 'Best First'.
Re^4: Hang on STDOUT
by DanEllison (Beadle) on Jul 02, 2015 at 16:47 UTC

    True, and easy enough. I'll try to eliminate any possibility of a collision.

    your (exceptionally vaguely described) problem

    Yes, I know. During 8 hours of processing, it may hang once or twice, and seemingly different locations. If I could describe it any better, it wouldn't be a problem.

      If I could describe it any better, it wouldn't be a problem.

      I appreciate that it can be hard to track these sort of things down.

      One thing I would try is replace the printf with sprintf to a variable, and the print the variable and put another trace between the two.

      Ie. Try and eliminate whether it is the formatting or the IO that's hanging up.


      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.
      I'm with torvalds on this Agile (and TDD) debunked I told'em LLVM was the way to go. But did they listen!

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1132987]
help
Chatterbox?
[Discipulus]: thanks choroba.. todo list need a pager..

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (6)
As of 2017-11-24 12:10 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    In order to be able to say "I know Perl", you must have:













    Results (348 votes). Check out past polls.

    Notices?