Problemes de Multithreading

fouffouf Membre
février 2005 modifié dans API AppKit #1
Bon j'ai un enorme probleme de multithreading : je veux 2 thread, j'en ai entre 20 et 30 (oui oui, en plus, ca varie).
Le thread en question est cense gere l'envoie d'un executable auxiliaire mais je ne recois rien.

HEEEELLLLLP  :why?:

Ca fait 3 jours que je seche. Je commence a en avoir un peu (beaucoup) marre. Comme on dit, c'est relou. Voila le projet en attache.

[Fichier joint supprimé par l'administrateur]

Réponses

  • cbrandtcbrandt Membre
    23:52 modifié #2
    y'a un pb avec ton fichier zip...  >:)
  • BruBru Membre
    23:52 modifié #3
    Il n'y a pas de problème avec ton fichier zip...

    .
  • aranaudaranaud Membre
    23:52 modifié #4
    dans 1108918779:

    y'a un pb avec ton fichier zip...  >:)


    Tu es sûr. Pour moi, çà  a bien marcher.

    Et je dirai que tu as oublié de quitter le thread.

    <br /><br />...<br />[threadPool release];<br />[NSThread exit];<br />
    
  • BruBru Membre
    23:52 modifié #5
    Par contre, y'a vraiment un problème, mon coco.

    Prendre presque 50% de cpu de mon G5 (j'adore dire que j'ai un imac G5) alors que l'aplli ne semble plus rien faire...

    et monter jusqu'à  40 threads (selon thread viewer) même au repos, là  y'à  un blème !

    Je jette un oeil.

    .
  • fouffouf Membre
    23:52 modifié #6
    dans 1108919801:

    Il n'y a pas de problème avec ton fichier zip...
    dans 1108920056:

    Tu es sûr. Pour moi, çà  a bien marcher.

    Pour moi aussi (c'est plus normal) :fouf):


    dans 1108920056:

    Et je dirai que tu as oublié de quitter le thread.

    <br /><br />...<br />[threadPool release];<br />[NSThread exit];<br />
    


    Non, ca ne change rien. Je pense parce que j'ai creer le thread avec detachNewThread...

    Ce qui m'inquiete le plus, c'est que des threads se cree et se detruisent tout seul alors que je n'ai rien demande. Puis, l'appli consomme entre 50 et 70 % du temps CPU.  ??? Pendant ce temps, l'auxiliaire consomme 0% alorsa que c'est lui qui fais les calculs. Doit y avoir une boucle qq part mais ou ? Ca va etre la 3eme fois que je relis mon code en entier.
  • cbrandtcbrandt Membre
    23:52 modifié #7
    bon, y'a un problème avec mon système alors...  :'(

  • BruBru Membre
    23:52 modifié #8
    Bon le p'tit gars,

    remplace
    [tt]
        [evaluator setStandardInput:toPipe];
        [evaluator setStandardOutput:fromPipe];
    [/tt]

    dans init de ton PlotController par :
    [tt]
        [evaluator setStandardInput:toEvaluator];
        [evaluator setStandardOutput:fromEvaluator];
    [/tt]

    et tout rentrera dans l'ordre !

    .
  • fouffouf Membre
    23:52 modifié #9
    Bru, t'es un pote.
    Trop sympa de m'avoir aider.

    Je ne sais pas quoi dire. Si : merci
    o:) o:)
  • fouffouf Membre
    23:52 modifié #10
    Bon, j'ai maintenant un autre probleme : les donnees sont envoyees une premiere fois grace au NSFileHandle (aucun pb) mais la deuxieme fois, j'ai comme qui dirait une merde : un SIGPIPE avec de temps en temps une exeption situee dans le debugger au niveau de [NSConcreteFileHandle writeData:].

    Je commence a un peu en avoir marre la.

    [Fichier joint supprimé par l'administrateur]
  • cbrandtcbrandt Membre
    23:52 modifié #11
    ahhh les joies d'unix... tu reçois un signal SIGPIPE quand ton "tuyaux" a été fermé à  l'autre bout... pour éviter de quitter à  ce moment, tu as deux possibilités:
    - indiquer que tu veux ignorer ce signal, et dans ce cas la prochaine lecture ou écriture sur ce tuyau va échouer, et tu gères l'erreur à  ce niveau
    - sinon tu indiques l'adresse d'une fonction 'C' qui sera appelée lorsque le signal est signalé (arf) et dans cette fonction tu peux traiter l'erreur, etc...

    la 1ère solution est de loin la plus simple, à  mon avis:

    <br />#include &lt;signal.h&gt;<br />...<br />// à  mettre dans un awakeFromNib ou autre:<br />signal (SIGPIPE, SIG_IGN);<br />
    


    sinon man signal pour tous les détails !
  • fouffouf Membre
    23:52 modifié #12
    Je suis d'accord avec toi cbrant, mais je ne comprends pas pourquoi le tuyau se ferme. Ecoute, je vais essayer de tout revoir. J'ai ptet fais un oubli en codant. J'sais pas.
  • BruBru Membre
    23:52 modifié #13
    dans 1109002082:

    Je suis d'accord avec toi cbrant, mais je ne comprends pas pourquoi le tuyau se ferme. Ecoute, je vais essayer de tout revoir. J'ai ptet fais un oubli en codant. J'sais pas.


    Je ne me souviens plus de ton code, mais je crois que tu créés tes pipes en autorelease... Or je pense qu'au release, ils sont fermés.

    Remplace ton [xxx pipe] par un traditionnel alloc/init pour voir.

    .
  • ClicCoolClicCool Membre
    23:52 modifié #14
    dans 1108920449:

    (j'adore dire que j'ai un imac G5)


    T'en est content de ton G5 ? ça change vraiment les choses ?
    De mon côté les nouveaux PB étant toujours G4, je patiente en attendant les G5 pour remplacer mon "vieux" 17" G4 1Ghz.
    Stp dis moi que ça vaut le coup et que j'ai raison ;)
  • fouffouf Membre
    23:52 modifié #15
    Bon, j'ai reussi a y arriver. Me demander pas comment, je ne sais pas.
    Je vous donne une capture de ce que cela donne.

    Oxitan, tu voulais une bonne image du framework GraphTool, en voila une (enfin, je pense) En tout cas, merci Mala.

    [Fichier joint supprimé par l'administrateur]
  • cbrandtcbrandt Membre
    23:52 modifié #16
    superbe ! 
  • muqaddarmuqaddar Administrateur
    23:52 modifié #17
    dans 1109271959:

    Oxitan, tu voulais une bonne image du framework GraphTool, en voila une (enfin, je pense) En tout cas, merci Mala.


    Je l'ai changée, merci fouf.
  • fouffouf Membre
    23:52 modifié #18
    dans 1109325225:

    Je l'ai changée, merci fouf.

    Non, non. Merci oxitan de l'avoir mise sur le site.
Connectez-vous ou Inscrivez-vous pour répondre.