Un coup de main pour trouver la raison de 100% de conso du processeur - Ada - Programmation
Marsh Posté le 26-11-2010 à 12:45:30
Bonjour,
Bon je suis pas doué avec le Ada, mais ligne 17, c'est quoi? tu testes si le parametre est nul ou s'il y a quelque chose dans le buffer?
Si tu teste juste si le paramètre est null tu essaie de lire son contenu en boucle ->occupation a 100% ?
En général on teste s'il y a des donnée à lire et en fonction de ce test on fait un delay...
(enfin si j'ai bien compris ton code)
Marsh Posté le 26-11-2010 à 12:56:29
bonjour breizhbugs, j'ai commenté ce petit bout de code.
Code :
|
Si ça venait de la, j'aurais un listing de "Reading input" et de "Sending input", c'est pas le cas.
Merci en tout cas.
Marsh Posté le 26-11-2010 à 14:55:28
Et en mettant des put_line un peu partout tu verrais ou ca boucle trop vite?
Marsh Posté le 26-11-2010 à 19:03:51
je pense que ça viens de read_handler, c'est une petite fonction C qui lit l'entrée Midi en boucle.
Marsh Posté le 26-11-2010 à 19:33:25
Rho ! Oui, c'est ça mais je n'arrive pas à andiguer le phénomène...
Est-ce que t'es meilleur en C breizhbugs ?
Mon bout de code C, j'ai placé des usleep, mais rien à faire. ça consomme encore.
Code :
|
Marsh Posté le 26-11-2010 à 20:05:39
t'es sur que usleep prends des nombre a virgule? http://www.linux-kheops.com/doc/ma [...] eep.3.html
mets un temps genre 100 millisecondes...
Marsh Posté le 26-11-2010 à 12:04:03
Bonjour, merci pour votre aide.
J'écris actuellement un petit programme pour piloter une instrument MIDI mais qui malheureusement consomme 100% des ressource du processeur.
J'ai révisé mon code et ai trouvé une cause mais il en reste.
Donc, cette consommation survient à la création d'un tache qui lit sur le port MIDI, via un binding C vers la bibliothèque portmidi, dont voici le l'implémentation (de la tache) avec Ada.
Je ne comprend pas, vraiment, je suis dérouté. Au cas où, voici le lien sur les sources+bin pour linux, avec Ada, Gtkada, trois bout de langage C := El-Softare.tar.gz
Malheureusement, je n'ai pas encore produit de documentation (pas taper).
La tache T_Input_Driver est déclaré dans le fichier src/lib/MidiSurf/el-instrument.adb dans le corps de la tache T_MidiCtrl.
Si vous avez du temps, l'oeil, merci pour votre aide.