🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: be.comp.programming
8 messages
8 total messages Started by Nitro Mon, 18 Oct 2004 21:35
Perl & threads
#1998
Author: Nitro
Date: Mon, 18 Oct 2004 21:35
32 lines
1773 bytes
ik weet niet of ik iets mis doe, maar mijn threads in perl doen raar.

ik heb een heel simpel programmake da iets moet afprinten (2 threads, 2
strings), maar ze komen maar om de beurt.

En na ne tijd quit da programma van zelf, wat mij ook ni normaal lijkt?

Mijn code:

#!/usr/bin/perl -w
use strict;
use threads;

my $t1 = threads->new( sub { thread("aaaaa")});
my $t2 = threads->new( sub { thread("bbbbb")});

sub thread() {
    my $s = $_[0];
    while(1 > 0) {
        print($s."\n");
#        sleep(5);
    }
}

Ik heb al met detach geprobeerd ook, maar da helpt ni.

Als ik die sleep uitcomment, dan runt elke thread 1 keer (ene print dus)
en quitten ze direct, waarom???


thanks
Nitro
Re: Perl & threads
#1999
Author: John Bokma
Date: Mon, 18 Oct 2004 22:47
76 lines
2344 bytes
Nitro wrote:

> ik weet niet of ik iets mis doe, maar mijn threads in perl doen raar.
> 
> ik heb een heel simpel programmake da iets moet afprinten (2 threads,
> 2 strings), maar ze komen maar om de beurt.
> 
> En na ne tijd quit da programma van zelf, wat mij ook ni normaal
> lijkt? 
> 
> Mijn code:
> 
> #!/usr/bin/perl -w

Gebruik liever:

use warnings;

ipv -w

> use strict;
> use threads;
> 
> my $t1 = threads->new( sub { thread("aaaaa")});
> my $t2 = threads->new( sub { thread("bbbbb")});
> 
> sub thread() {

waarom gebruik je () (prototyping) ?

>     my $s = $_[0];

Ik geef de voorkeur aan:

my ( $s ) = @_;

Handig als je later nog eens een parameter extra nodig hebt, of

my $s = shift;


>     while(1 > 0) {

while (1) {

(leesbaarder)


>         print($s."\n");

( niet nodig, en je kan dus dit doen:

print "$s\n";

Overigens is s geen handige naam voor een variabele


> #        sleep(5);
>     }
> }
> 
> Ik heb al met detach geprobeerd ook, maar da helpt ni.
> 
> Als ik die sleep uitcomment, dan runt elke thread 1 keer (ene print
> dus) en quitten ze direct, waarom???

Heb je mazzel. Je start twee threads, en vervolgens exit je programma.
Wat had je dan verwacht? 

Zet eens na die twee my's een sleep(10000) :-)

-- 
John Bokma
                 Voorbeeldscripts in Perl: http://johnbokma.com/perl/
Ervaren Perl / Java programmeur beschikbaar:  http://castleamber.com/
Tevreden opdrachtgevers:     http://castleamber.com/testimonials.html
Re: Perl & threads
#2000
Author: Nitro
Date: Tue, 19 Oct 2004 05:45
87 lines
3064 bytes
On Mon, 18 Oct 2004 22:47:36 +0000, John Bokma wrote:

> Nitro wrote:
> 
>> ik weet niet of ik iets mis doe, maar mijn threads in perl doen raar.
>> 
>> ik heb een heel simpel programmake da iets moet afprinten (2 threads,
>> 2 strings), maar ze komen maar om de beurt.
>> 
>> En na ne tijd quit da programma van zelf, wat mij ook ni normaal
>> lijkt? 
>> 
>> Mijn code:
>> 
>> #!/usr/bin/perl -w
> 
> Gebruik liever:
> 
> use warnings;
> 
> ipv -w
> 
>> use strict;
>> use threads;
>> 
>> my $t1 = threads->new( sub { thread("aaaaa")});
>> my $t2 = threads->new( sub { thread("bbbbb")});
>> 
>> sub thread() {
> 
> waarom gebruik je () (prototyping) ?
> 
>>     my $s = $_[0];
> 
> Ik geef de voorkeur aan:
> 
> my ( $s ) = @_;
> 
> Handig als je later nog eens een parameter extra nodig hebt, of
> 
> my $s = shift;
> 
> 
>>     while(1 > 0) {
> 
> while (1) {
> 
> (leesbaarder)
> 
> 
>>         print($s."\n");
> 
> ( niet nodig, en je kan dus dit doen:
> 
> print "$s\n";
> 
> Overigens is s geen handige naam voor een variabele
> 
> 
>> #        sleep(5);
>>     }
>> }
>> 
>> Ik heb al met detach geprobeerd ook, maar da helpt ni.
>> 
>> Als ik die sleep uitcomment, dan runt elke thread 1 keer (ene print
>> dus) en quitten ze direct, waarom???
> 
> Heb je mazzel. Je start twee threads, en vervolgens exit je programma.
> Wat had je dan verwacht? 
> 
> Zet eens na die twee my's een sleep(10000) :-)

Ok, dit werkt idd. Bedankt. Ook bedankt voor de andere tips. Ik ben nog
niet zo vlot met perl, maar dit was maar een testprogrammaatje, vandaar
die $s enzo.

Wat bedoel je hiermee?
> waarom gebruik je () (prototyping) ?

En eigenlijk had ik verwacht dat mijn hoofdthread mooi ging stoppen, maar
dat de andere bleven doordoen tot ook zij hun stop tegenkwamen (nooit dus).

Dit zal wel eerder aan mijn rededering/wakkerheid liggen dan aan iets
anders :)

Nitro
Re: Perl & threads
#2002
Author: John Bokma
Date: Tue, 19 Oct 2004 16:55
27 lines
1511 bytes
Nitro wrote:

> On Mon, 18 Oct 2004 22:47:36 +0000, John Bokma wrote:

> Wat bedoel je hiermee?
>> waarom gebruik je () (prototyping) ?

Bij Perl gebruik je normaal geen () achter de sub naam, alleen als je een 
prototype wilt opgeven, wat normaal zelden nodig is.

dus:

sub naam {

    my ( ..... ) = @_;

    ....
}

De parameterlijst staat dus in feite in het my deel.


-- 
John Bokma
                 Voorbeeldscripts in Perl: http://johnbokma.com/perl/
Ervaren Perl / Java programmeur beschikbaar:  http://castleamber.com/
Tevreden opdrachtgevers:     http://castleamber.com/testimonials.html
Re: Perl & threads
#2003
Author: Nitro
Date: Tue, 19 Oct 2004 16:58
26 lines
1713 bytes
On Tue, 19 Oct 2004 16:55:52 +0000, John Bokma wrote:

> Nitro wrote:
> 
>> On Mon, 18 Oct 2004 22:47:36 +0000, John Bokma wrote:
> 
>> Wat bedoel je hiermee?
>>> waarom gebruik je () (prototyping) ?
> 
> Bij Perl gebruik je normaal geen () achter de sub naam, alleen als je een 
> prototype wilt opgeven, wat normaal zelden nodig is.
> 
> dus:
> 
> sub naam {
> 
>     my ( ..... ) = @_;
> 
>     ....
> }
> 
> De parameterlijst staat dus in feite in het my deel.

En een prototype is?

Nitro
Re: Perl & threads
#2008
Author: John Bokma
Date: Tue, 19 Oct 2004 18:23
19 lines
1547 bytes
Nitro wrote:
 
> En een prototype is?

perldoc perlsub

(of als je ActiveState gebruikt, en Perl staat op default locatie:
 file:///C:/Perl/html/lib/Pod/perlsub.html#prototypes)

maar kort: zet achter de naam van een sub geen (), tenzij je weet wat je 
aan het doen bent :-). Het is *niet* hetzelfde als () in andere talen 
(void).


-- 
John Bokma
                 Voorbeeldscripts in Perl: http://johnbokma.com/perl/
Ervaren Perl / Java programmeur beschikbaar:  http://castleamber.com/
Tevreden opdrachtgevers:     http://castleamber.com/testimonials.html
Re: Perl & threads
#2011
Author: Nitro
Date: Tue, 19 Oct 2004 18:47
26 lines
1943 bytes
On Tue, 19 Oct 2004 18:23:27 +0000, John Bokma wrote:

> Nitro wrote:
>  
>> En een prototype is?
> 
> perldoc perlsub
> 
> (of als je ActiveState gebruikt, en Perl staat op default locatie:
>  file:///C:/Perl/html/lib/Pod/perlsub.html#prototypes)
> 
> maar kort: zet achter de naam van een sub geen (), tenzij je weet wat je 
> aan het doen bent :-). Het is *niet* hetzelfde als () in andere talen 
> (void).


OK !

betekent () achter een methode normaal niet: geen argumenten meegeven?


de meeste fouten waren echter nog wel restanten van probeersels, normaal
doe ik niet zo achterlijk :)

Heel hard merci
Nitro
Re: Perl & threads
#2012
Author: John Bokma
Date: Tue, 19 Oct 2004 19:22
15 lines
1597 bytes
Nitro wrote:

[ sub naam () { in Perl ]
 
> betekent () achter een methode normaal niet: geen argumenten meegeven?

Yup, maar "niet" bij Perl. Perl heeft een vrij aparte manier van argumenten 
meegeven, ze komen in @_ Dus elke sub heeft een variabel aantal parameters 
(tenzij je prototypes gebruikt).

-- 
John Bokma
                 Voorbeeldscripts in Perl: http://johnbokma.com/perl/
Ervaren Perl / Java programmeur beschikbaar:  http://castleamber.com/
Tevreden opdrachtgevers:     http://castleamber.com/testimonials.html
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