Comment créer des threads sur Amiga ?

8 sujets de 16 à 23 (sur un total de 23)

  • 1
  • 2
  • crisot

      #137251

      Délire. Je me suis cogné ce code récement pour mon triple buffer :-)

      cclecle

        #137252

        @Gilloo:

        merci pour l’éclaircissement fort utile ! Mais tu ne voulais pas plutot dire que mon compilo a des int sur 16bits plutot que les 32bit attendu par la pile ?

        A600 + 604n + RTC + Vampire V2 600, Coffin R54 / wb3.1.4.1
        A1200 + Vampire V2 1200, wb3.1.4.1

        cclecle

          #137253

          Comment puis-je faire pour passer des arguments à un process lors de sa creation ?

          J’ai bien vu qu’il existe la fonction ReadArgs et le tag NP_Arguments mais j’ai du mal à en cerner le fonctionnement !

          Merci

          PS: désolé pour le double-post mais sa me parait “justifié”

          A600 + 604n + RTC + Vampire V2 600, Coffin R54 / wb3.1.4.1
          A1200 + Vampire V2 1200, wb3.1.4.1

          Mod

          Tcheko

            #137254

            Salut,

            Grosso modo…

            Côté pere :

            struct MonMessage

            {

            struct Message msg;

            LONG dataapasseraufils;

            };

            message = AllocVec(sizeof(struct MonMessage), MEMF_CLEAR|MEMF_PUBLIC);

            if(message)

            {

            message->msg.champ à initialiser (voir doc)

            /*forbid/permit obligatoire. le fils peut ne plus exister entre findport et putmsg */

            Forbid();

            if(portdufils = FindPort(“Nomduportdufile”)) != NULL)

            {

            PutMsg(portdufils, messagedupere);

            }

            Permit();

            }

            Côté fils :

            Ajouter un port avec un nom.

            Wait(portdufils);

            /* plusieurs messages peuvent attendre sur un signal */

            While(msg = GetMsg(portdufils))

            {

            … traiter le message

            /* choisir qui libère la ressource du message, soit le fils (cas: pas de réponse au père) soit le père, on renvoie le message */

            FreeVec(msg);

            OU

            ReplyMsg(msg); /* (et c’est le père qui nettoie */

            }

            http://www.cunningham-lee.com/misc/amiga_exec.html

            http://gega.homelinux.net/AmigaDevDocs/lib_24.html

            http://aminet.net/search?query=thread

            corto

              #137255

              Apparemment, tu passes une chaîne avec NP_Arguments et depuis ton process fils, tu utilises :

              STRPTR ptr = GetArgStr(VOID);

              Je n’ai pas essayé … Mais c’est marrant, j’ai moi aussi joué avec CreateNewProc tout mon dimanche !

              cclecle

                #137256

                @Tcheko :

                Merci mais étant donné que je veut faire un tableau de process dans mon main et instancier plusieurs fois la fonction (une instance par process), le message n’est pas valable car chaque port de message aura le même nom pour chaque process.

                C’est justement pour cela que je veut passer un argument au démarrage du process, pour lui passer sont numéro !


                @corto
                :

                Merci, je vais expérimenter sa ce soi, sa me semble être la meilleur solution !

                Vivement un support du multiprocesseur sur un OS amiga !

                A600 + 604n + RTC + Vampire V2 600, Coffin R54 / wb3.1.4.1
                A1200 + Vampire V2 1200, wb3.1.4.1

                henes

                  #137257

                  Regarde plutôt le champ/tag “userdata” qui est là pour passer des infos (l’adresse d’une structure, par ex) du père au fils lors de la création de ce dernier.

                  Nul besoin de port public venant polluer l’espace de nom ou autre horreur :)

                  Gilloo

                    #137258

                    je plussoie Hennes!

                    car faire simple, c’est compliqué.

                  8 sujets de 16 à 23 (sur un total de 23)

                  • 1
                  • 2
                  • Vous devez être connecté pour répondre à ce sujet.

                  Forums AmigaOS, MorphOS et AROS Développement Comment créer des threads sur Amiga ?

                  Amiga Impact