Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"

Re^4: Threads and print

by sandy1028 (Sexton)
on Apr 17, 2009 at 04:57 UTC ( #758125=note: print w/replies, xml ) Need Help??

in reply to Re^3: Threads and print
in thread Threads and print

Hi, Here I used the code for writing into single log file.
But the threads are not printing the "Processesing file" in sequence order and the lines overlap even if I use lock. How can i avoid this?
#! perl -slw use strict; use threads; use threads::shared; our $from=1; our $to=400020; our $t=5; sub worker { my $tid = threads->tid; # my( $log, $semRef, $from, $to ) = @_; my( $log, $semRef, $from, $step, $to ) = @_; for (my $file = $from ; $file <= $to ; $file += $step) { lock $$semRef; printf $log "The threads is [%2d] Processesing file%3d\n",$tid, $file +; } } ## A shared variable used as a semaphore for the log file resource my $logSem :shared; ## Open the log file in the main thread open my $log, '>', 'myLog' or die $!; my @threads = map{ threads->create( \&worker, $log, \$logSem, $from + ($_ - 1), $t, $to +) ; } 1 .. $t ; ## Wait till they are done $_->join for @threads; ## close the log close $log;
The threads is [ 1] Processesing file16436 The threads is [ 1] Processesing file16441 The threads is [ 1] Processesing file 2] Processesing file2462 The threads is [ 2] Processesing file2467 The threads is [ 2] Processesing file2472

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://758125]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (2)
As of 2023-09-24 02:40 GMT
Find Nodes?
    Voting Booth?

    No recent polls found