[API]Fonctions en parallèle

Voir le sujet précédent Voir le sujet suivant Aller en bas

[API]Fonctions en parallèle

Message par Quae le Dim 19 Mar - 17:40

Bonjour,

En codant, il m'est arrivé à plusieurs reprises d'avoir besoin de faire tourner des fonctions en parallèle, ne serait-ce que pour attendre une réponse tout en faisant une action. C'est pourquoi l'API parallel existe sous CC, mais elle a une grosse limitation: l'impossibilité de donner des arguments à nos fonctions. On peut contourner le problème, mais afin d'avoir une solution à peu près élégante, j'ai réalisée cette petite API. Basiquement, à partir de l'API parallel de base, cette API rajoute deux fonctions principales: waitForAny et waitForAll.

synchro.waitForAny:
waitForAny(function1,...) fonctionne exactement comme parallel.waitForAny, exceptée qu'elle prend en argument une fonction suivi de son ou ses arguments, de la manière suivante: l'argument suivant function1 doit être soit une table numérotée comprenant les arguments à appliquer à function1, soit l'argument à appliquer à function1 si ce n'est pas une table ou une fonction, soit function2 si function1 ne prend pas d'argument.
waitForAny retourne au moins un résultat: le numéro de la fonction s'étant arrêtée en premier. Si cette fonction a retourné un ou plusieurs résultats, ils sont renvoyés à la suite de celui-ci.

synchro.waitForAll:

waitForAll(function1,...) fonctionne exactement comme parallel.waitForAll, exceptée qu'elle prend en argument une fonction suivi de son ou ses arguments, de la manière suivante: l'argument suivant function1 doit être soit une table numérotée comprenant les arguments à appliquer à function1, soit l'argument à appliquer à function1 si ce n'est pas une table ou une fonction, soit function2 si function1 ne prend pas d'argument.
waitForAll renvoie les mêmes résultats que la dernière fonction s'étant arrêtée.

Le fichier:
pastebin get G8xLLxz3 synchro


Dernière édition par Quae le Lun 20 Mar - 22:46, édité 2 fois

Quae

Messages : 4
Date d'inscription : 18/03/2017

Revenir en haut Aller en bas

Re: [API]Fonctions en parallèle

Message par cedmeu le Lun 20 Mar - 22:06

Merci, c'est sympa, et c'est plus propre que d'avoir à jouer avec des variables plus ou moins globales et de s'emmêler les pinceaux Smile

cedmeu
Admin

Messages : 481
Date d'inscription : 28/03/2016

http://forum.computercraft.fr

Revenir en haut Aller en bas

Re: [API]Fonctions en parallèle

Message par Quae le Lun 20 Mar - 23:25

Yup, et il y a les retours aussi ce qui permet de faire un waitForAny(os.pullEvent,"mouse_click",os.pullEvent,"modem_message") par exemple en restreignant à plusieurs événements, mais pas forcément tous.

Quae

Messages : 4
Date d'inscription : 18/03/2017

Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum