Jaber Posted April 10, 2016 Share Posted April 10, 2016 Yop' , donc j'ai remarquer que Mta sa ne prend pas en compte les coroutine depuis la 1.5 d’après le wiki , déja une coroutine c'est quoi ? d’après wxlua une coroutine est similaire a un thread un processus qui exécute plusieurs Thread qui semble s’exécuter en parallèle : Tout d'abord, un petit rappel sur ce qu'est un thread: Un thread est similaire à un processus, car tous deux représentent l'exécution d'un ensemble d'instructions du langage machine d'un processeur. Et du point de vue de l'utilisateur, ces exécutions semblent se dérouler en parallèle. Mais, là où chaque processus possède sa propre mémoire virtuelle, les threads d'un même processus se partagent sa mémoire virtuelle. Comme exemple d'application, l'on peut citer les traitements de texte où la correction orthographique est exécutée tout en permettant à l'utilisateur de continuer à entrer son texte. En Lua, une coroutine est similaire à un thread et représente une ligne d'exécution avec sa propre pile, ses propres variables locales et son pointeur d'instruction propre. La principale différence est que si un programme peut fonctionner avec plusieurs threads simultanés, il ne pourra en revanche ne faire tourner qu'une seule coroutine à la fois. Le système des coroutines est un système collaboratif, une coroutine s'exécute, puis passe la main à une autre, et ainsi de suite. Une coroutine, va donc permettre de faire exécuter un programme en tâche de fond, sans ralentir celui du premier plan. vous alez me dire : " qu'est ce qu'on a foutre ?! " bah plusieurs Gamemode utilise cette fonction dont le Gamemode qui me sert de base ( Fairplay Gaming https://github.com/Socialz/lua-mta-fairplay ) comme mta ne les prends plus en compte bah on a de jolies erreurs : cannot resume dead coroutine [string "?"] Mais en jouant avec un IDE lua j'ai compris que depuis la dernière version du lua les coroutine bug . J'ai essayer de faire des print pour comprendre j'ai essayer avec un IDE lua le résultat avec ce code : co = coroutine.create( function() print("bonjour") end) print(co) ce = coroutine.running() coroutine.resume(co) print("les thread en route \n",ce,coroutine.resume(co)) print("cette coroutine est : ",coroutine.status(co)) ça retourne : bonjour les thread en route thread: 0x7f8ddb3a0018 false cannot resume dead coroutine cette coroutine est : dead On dirait que coroutine.resume() tue la coroutine ce qui est étrange ... J'aimerai avoir votre avis dessus et si y'a un moyen de contourner ça merci Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now