Forum Programmation.perl les threads ...

Posté par  (site web personnel) .
Étiquettes : aucune
0
26
juil.
2005
Je cherche a comprendre comme on s'en sert en PERL.
Voire mieux : les threads GTK2.
Mais la doc est bien pauvre et le me tape un message :


This Perl hasn't been configured and built properly for the threads
module to work. (The 'useithreads' configuration option hasn't been used.)

Having threads support requires all of Perl and all of the XS modules in
the Perl installation to be rebuilt, it is not just a question of adding
the threads module. (In other words, threaded and non-threaded Perls
are binary incompatible.)

If you want to the use the threads module, please contact the people
who built your Perl.

Cannot continue, aborting.
BEGIN failed--compilation aborted at /usr/lib/perl5/5.8.7/i386-linux/threads.pm line 28.
Compilation failed in require at Modules/Gui.pm line 8.
BEGIN failed--compilation aborted at Modules/Gui.pm line 8.
Compilation failed in require at ./coin.pl line 5.
BEGIN failed--compilation aborted at ./coin.pl line 5.



Quelqu'un saurait-il me sortir de ce mauvais pas ?
Merci :) !
  • # recompiler perl ?

    Posté par  . Évalué à 3.

    BEGIN failed--compilation aborted at ./coin.pl line 5.
    pan.pl

    Plus sérieusement, comme l'a dit le gentil Perl, tu as une version compilée de Perl qui ne supporte pas les threads.

    La solution? Installer une version qui supporte les threads (peut-être un package de ta distrib prefere avec thread dans le nom), ou recompiler Perl avec le support des threads. T'es sur quel systeme?
  • # Thread perl

    Posté par  . Évalué à 3.

    Fait aussi gaffe avec les threads perl. Ça ne fonctionne pas vraiment comme les threads POSIX. Ça ressemble plus à un fork, qu'à un pthread_create. Par défaut, les threads ne voient pas les variables des autres "threads", il faut explicitement les partager (attribut "shared" ou l'instruction "share"). J'ai trouvé ça plutôt étrange au début. Sans compter que certaines opérations ne fonctionnent pas sur les variables partagées (splice), j'ai aussi eu des cas où tout l'interpréteur perl bloquait sur un appel Win32 (package Win32::Services de mémoire). Bref, les threads en perl ça m'a laissé un arrière goût de bidouille.

    Sinon, pour le message d'erreur, je confirme qu'il te faudra recompiler perl.
    • [^] # Re: Thread perl

      Posté par  . Évalué à 3.

      les threads en perl ça m'a laissé un arrière goût de bidouille.

      Dans la mesure ou c'est de la bidouille ...
      • [^] # Re: Thread perl

        Posté par  . Évalué à 2.

        Tout à fait d'accord je les ai essayé et ils ne sont pas évident du tout à manipuler (notamment pour ce qui est de la nécessité de déclarer explicitement l'ensemble des variables à partager, mais aussi leurs valeurs ...)

        Par contre je me suis permis de remarquer que tu avais un module GUI, ... alors un bon conseil si par hasard tu utilises Gtk2 n'utilise pas les threads perl, d'après mon expérience ce n'est pas compatible.
        Il vaut mille fois mieux utiliser le sequencer de la glib pour scheduler differentes parties du code (ex : Glib::Timeout)...

        Voila ...!
        • [^] # Re: Thread perl

          Posté par  . Évalué à 2.

          Je note ta remarque, bien que Perl me serve essentiellement pour des scripts d'Admin et que, dans ce contexte, perl/tk côté interface graphique me suffit amplement (le bit n'étant pas d'avoir un truc joli, mais un truc efficace).


          Pour les trucs un peu plus poussés et qui auraient besoin de thread, je préfère utiliser Python.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.