in reply to Re^2: Weird Output with Threads and NCurses
in thread Weird Output with Threads and NCurses
By way of contrast, here's what a threaded solution might look like:
#! perl -slw use strict; use threads; use Thread::Queue; use Win32::Console; my $con = new Win32::Console STD_OUTPUT_HANDLE; $con->Cls( $FG_LIGHTBLUE | $BG_WHITE ); my $Qcon = new Thread::Queue; async{ while( my( $what, $where ) = split $;, $Qcon->dequeue ) { $con->WriteChar( $what, 5, $where ); } }->detach; sub writer { my $pos = shift; my $counter = 0; while( 1 ) { $Qcon->enqueue( join $;, ++$counter, $pos ); select '','','', rand( 0.2 ); } } my @writers = map threads->create( \&writer, $_ ), 5, 15; sleep 100;
It is windows only, but adapting it to *nix shouldn't be too hard.
The real benefit shows up when you start to want to do something useful in the threads.
|
|---|