in reply to Re: locking STDOUT
in thread locking STDOUT

so you suggest filtering all things 
through a shell pipe...im not sure how
i could use that to have lock-similar functionality.
im into multithreading not multiprocesses.
im thinking of making a separate
my $buffer:shared=""; sub PRINT { lock $buffer; $buffer.=shift; } sub dump_on_screen { lock $buffer; print $buffer; $|++; $buffer=""; }
and have a thread say...PRINT_THREAD that
periodically prints stuff to the screen
but in the order they happened in real-time
my $pt=threads->new(\&PRINT_THREAD); sub PRINT_THREAD { dump_on_screen(); }
i havent been clear enough in what i want to do actually, i have a multithreding app and i want to print stuff on the screen just as they happen. i want print to be atomic so thats why i want to lock the screen before i start doing anything. id like to get the order in wich threads

Replies are listed 'Best First'.
Re^3: locking STDOUT
by derby (Abbot) on Jun 04, 2007 at 12:15 UTC

    i havent been clear enough in what i want to do actually, i have a multithreding app and i want to print stuff on the screen just as they happen. i want print to be atomic so thats why i want to lock the screen before i start doing anything. id like to get the order in wich threads

    In that case, I don't think you want to lock the screen but set STDOUT to be non-buffering. See the $| entry in perlvar or Suffering from Buffering.

    -derby

    Update: At the beginning of your script, I would set STDOUT to be non-buffering:

    select STDOUT; $| = 1;