Thread View: be.comp.programming
2 messages
2 total messages
Started by stefke
Mon, 12 May 2003 18:55
async perl module op solaris
Author: stefke
Date: Mon, 12 May 2003 18:55
Date: Mon, 12 May 2003 18:55
113 lines
3005 bytes
3005 bytes
Hallo,
Ik heb hier een klein probleempje met de Async module voor perl. Het rare
is dat het gedrag op solaris en windows (xp pro) verschillend is en ik
geraak er niet meer wijs uit.
Wat moet het doen:
1. een while loop 11 keer doorlopen en 10 keer daarvan een asynchroon
process starten.
2. als een async process is afgelopen wordt de return waarde weggeschreven
in een file.
Dit is de code:
use strict;
use Async;
my $continue = 1;
my $i = 0;
my ($retVal, $proc);
open (FILE, ">test.txt") or die "cannot open file\n";
while( $i<11)
{
if($proc)
{
while ( !( $proc->ready)){}
$retVal = $proc->result;
print "end of $retVal\n";
}
if( $i<10)
{
$proc = Async->new(sub { test($i)}) or die;
}
if( defined($retVal))
{
print FILE "test line $retVal\n";
}
$i++;
}
close FILE;
sub test
{
my ( $param) = @_;
sleep 1;
return $param;
}
Redelijk simpel denk ik toch maar het werkt verschillend op solaris en
windows. Op windows is het resultaat van het output bestand zoals ik het
verwacht maar op solaris loopt er iets de mist in en ik weet niet meer wat
het is.
dit is de output van windows:
test line 0
test line 1
test line 2
test line 3
test line 4
test line 5
test line 6
test line 7
test line 8
test line 9
en dit is die van solaris:
test line 0
test line 0
test line 1
test line 0
test line 1
test line 2
test line 0
test line 1
test line 2
test line 3
test line 0
test line 1
test line 2
test line 3
test line 4
test line 0
test line 1
test line 2
test line 3
test line 4
test line 5
test line 0
test line 1
test line 2
test line 3
test line 4
test line 5
test line 6
test line 0
test line 1
test line 2
test line 3
test line 4
test line 5
test line 6
test line 7
test line 0
test line 1
test line 2
test line 3
test line 4
test line 5
test line 6
test line 7
test line 8
test line 9
Moest er iemand kunnen helpen, ik zal je eeuwig dankbaar zijn.
Re: async perl module op solaris
Author: Dieter D'Hoker
Date: Mon, 26 May 2003 06:17
Date: Mon, 26 May 2003 06:17
149 lines
4412 bytes
4412 bytes
"stefke" <stefke@nospam.be> wrote in message
news:b9oqre$5dj$1@reader08.wxs.nl...
> Hallo,
>
> Ik heb hier een klein probleempje met de Async module voor perl. Het rare
> is dat het gedrag op solaris en windows (xp pro) verschillend is en ik
> geraak er niet meer wijs uit.
> Wat moet het doen:
> 1. een while loop 11 keer doorlopen en 10 keer daarvan een asynchroon
> process starten.
> 2. als een async process is afgelopen wordt de return waarde weggeschreven
> in een file.
>
> Dit is de code:
> use strict;
> use Async;
> my $continue = 1;
> my $i = 0;
> my ($retVal, $proc);
> open (FILE, ">test.txt") or die "cannot open file\n";
> while( $i<11)
> {
> if($proc)
> {
> while ( !( $proc->ready)){}
> $retVal = $proc->result;
> print "end of $retVal\n";
> }
> if( $i<10)
> {
> $proc = Async->new(sub { test($i)}) or die;
> }
> if( defined($retVal))
> {
> print FILE "test line $retVal\n";
> }
> $i++;
> }
> close FILE;
>
> sub test
> {
> my ( $param) = @_;
> sleep 1;
> return $param;
> }
>
> Redelijk simpel denk ik toch maar het werkt verschillend op solaris en
> windows. Op windows is het resultaat van het output bestand zoals ik het
> verwacht maar op solaris loopt er iets de mist in en ik weet niet meer wat
> het is.
>
> dit is de output van windows:
> test line 0
> test line 1
> test line 2
> test line 3
> test line 4
> test line 5
> test line 6
> test line 7
> test line 8
> test line 9
>
>
> en dit is die van solaris:
> test line 0
> test line 0
> test line 1
> test line 0
> test line 1
> test line 2
> test line 0
> test line 1
> test line 2
> test line 3
> test line 0
> test line 1
> test line 2
> test line 3
> test line 4
> test line 0
> test line 1
> test line 2
> test line 3
> test line 4
> test line 5
> test line 0
> test line 1
> test line 2
> test line 3
> test line 4
> test line 5
> test line 6
> test line 0
> test line 1
> test line 2
> test line 3
> test line 4
> test line 5
> test line 6
> test line 7
> test line 0
> test line 1
> test line 2
> test line 3
> test line 4
> test line 5
> test line 6
> test line 7
> test line 8
> test line 9
>
>
> Moest er iemand kunnen helpen, ik zal je eeuwig dankbaar zijn.
die Async module is vrij oud dacht ik ,
en gebruikt eigenlijk fork()
fork werd vroeger niet ondersteund door windows ,
nu word het geemuleerd door de nieuwe Threading capaciteiten van perl ...
Misschien is die Threading een optie voor jou ?
pas op je hebt er 2 verschillende implemetaties van ,
threads van 5.0 werd vervangen door "ithreads" in 5.6 daar allen al om
forking te emuleren ,
en in 5.8 helemaal geimplemteerd ...
het is dus idd uitkijken welk operating systeem / perl versie
(buiten het versienummer ook eens checken of het wel met threading support
gecompileerd is )
ahja , wat die Async betreft ,
die gebruitk dus fork ,
en fork start een heel nieuw onafhankelijk process op ,
dus als je op een machine bv. maar permissie hebt om 1 process te draaien ,
zal je daa rook problemen mee krijgen ...
omdat het sochtends is had ik niet veel zin om je code helemaal na te
pluizen kijken , sorry ;)
--
Dieter D'Hoker
http://dieter.dhoker.com/
news:free.nl.dieter.dhoker & news:alt.nl.fan.dieter.dhoker
Tetrinet SeRVer : TSRV.COM
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads