IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Web Perl Discussion :

[Perl][CGI][Thread] Deux threads ça passe, trois ça casse


Sujet :

Web Perl

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 35
    Points : 32
    Points
    32
    Par défaut [Perl][CGI][Thread] Deux threads ça passe, trois ça casse
    Je cherche à faire un script CGI qui charge 4 pages via HTTP en parallèle.

    Voici un code de base simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    #!/usr/bin/perl -w
     
    print "Content-type: text/plain\n\n";
     
    # --------------------------------------------------
     
    sub main::urlEncode {
        my ($string) = @_;
        $string =~ s/(\W)/"%" . unpack("H2", $1)/ge;
     
        return $string;
    }
     
    sub main::urlDecode {
        my ($string) = @_;
        $string =~ tr/+/ /;
        $string =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
     
        return $string;
    }
     
    sub main::getData {
    	my $engine = shift;
    	my $q = shift;
    	my $lang = shift;
     
    	$q = urlEncode ($q);	
    	my $content = "\"$engine. ceci est un test en $lang => $q\"\n";
    	print "Thread : $content";
    	return $content;
    }
     
    # --------------------------------------------------
     
    use CGI qw/:standard -debug/;
    use threads;
     
    # --------------------------------------------------
     
    $input = $ENV{QUERY_STRING};
    @liste= split(/&/,$input);
    foreach (@liste) 
    {
    	($name,$value)= split(/=/, $_);
     
    	if ($name eq 'q')
    	{
    		$q = $value;
    	}
    	if ($name eq 'lang')
    	{
    		$lang = $value;	
    	}
     
    }
    unless ($q)
    {
    	$q = "test";
    }
    unless ($lang)
    {
    	$lang = "fr";	
    }
     
    # --------------------------------------------------
     
    $thr1 = threads->new(\&getData, "1", $q, $lang) or die "\"erreur\"\n";;
    $thr2 = threads->new(\&getData, "2", $q, $lang) or die "\"erreur\"\n";
    $thr3 = threads->new(\&getData, "3", $q, $lang) or die "\"erreur\"\n";
     
    $data1 = $thr1->join;
    $data2 = $thr2->join;
    #$data3 = $thr3->join;
     
    print "Data 1 : ";
    print $data1;
    print "Data 2 : ";
    print $data2;
    print "Data 3 : ";
    print $data3;
     
    # --------------------------------------------------
     
    print "\nFin !";
    Mon problème vient du fait qu'au delà de deux threads, le script bloque sur cette instruction : $data3 = $thr3->join;

    Des idées pour en sortir (je suis hébergé chez Lost Oasis) ?

    Merci !

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 35
    Points : 32
    Points
    32
    Par défaut
    Je viens de passer chez Haisoft pour cette application, ça fonctionne parfaitement maintenant.

Discussions similaires

  1. [Débutant]Deux Threads différent dans une même classe?
    Par nicofromChina dans le forum Concurrence et multi-thread
    Réponses: 10
    Dernier message: 26/01/2007, 15h58
  2. [Thread] deux joueurs sur le même clavier
    Par homeostasie dans le forum SDL
    Réponses: 16
    Dernier message: 04/11/2006, 15h30
  3. synchronisation entre deux threads
    Par chabfive dans le forum Concurrence et multi-thread
    Réponses: 9
    Dernier message: 03/11/2006, 12h17
  4. Opération mathématique entre deux Threads
    Par rvzip64 dans le forum Langage
    Réponses: 11
    Dernier message: 13/06/2005, 11h58
  5. Communication entre deux Threads
    Par rvzip64 dans le forum Langage
    Réponses: 13
    Dernier message: 28/01/2005, 09h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo