yuyugs84 Posté(e) le 2 février 2006 Partager Posté(e) le 2 février 2006 Salut Je modifie donc complétement mo post... config de départ : Je fais des essais sous un outil de test d'automates indus... Cet outil me permet de créer des composants de test (pattes d'entrées, pattes de sorties + code du composant) Le language de programmation de ces composants est le C (pas de C++) le but : Simuler le déplacement d'un chariot, ce chariot avance d'un pas toutes les 5ms... Arrivé à 90% de sa prorgression, celui-ci ralentit : 10ms/pas Arrivé à 100%, il met une patte de sortie à 1 pour signaler l'arrivée en butée... mon prob : générer un compteur +1 ayant un pas de 5ms puis de 10ms... Ca me semblait tout simple et pourtant... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Baldurien Posté(e) le 2 février 2006 Partager Posté(e) le 2 février 2006 Ce que tu demande s'appelle des threads... (ie: faire deux choses en même temps). Je ne sais pas ce que tu veux faire exactement, ceci dit, et pour les threads & C/C++ tu m'oubliera :) la libpthread m'en souviens plus trop, et le truc à Windows... aie. Lien vers le commentaire Partager sur d’autres sites More sharing options...
naparuba Posté(e) le 3 février 2006 Partager Posté(e) le 3 février 2006 Un select avec un timeout ca pourrait t'aider non? Lien vers le commentaire Partager sur d’autres sites More sharing options...
yuyugs84 Posté(e) le 3 février 2006 Auteur Partager Posté(e) le 3 février 2006 ben en gros je cherche a faire ca : code blabla code blablabla ... ... si var_sponge_bob=True pause de 10 seconde mon_compteur=mon_compteur+1 fsi code blabla les threads ca me semble un peu lourd pour faire ca... Un select avec un timeout ??? Lien vers le commentaire Partager sur d’autres sites More sharing options...
tsubasaleguedin Posté(e) le 3 février 2006 Partager Posté(e) le 3 février 2006 Ba sans threadé ton algo tu risque de figer ton interface graphique pendant le sleep. Apres si c'est du tout console c'est pas un soucis (normalement) .. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Baldurien Posté(e) le 3 février 2006 Partager Posté(e) le 3 février 2006 Yep, surtout que c'est pas si compliqué les threads :) faut juste faire gaffe aux trucs partagés Lien vers le commentaire Partager sur d’autres sites More sharing options...
yuyugs84 Posté(e) le 3 février 2006 Auteur Partager Posté(e) le 3 février 2006 Vous auriez un pas un ptit exemple à me proposer ?? Merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
Baldurien Posté(e) le 3 février 2006 Partager Posté(e) le 3 février 2006 Comme je l'ai dis, je ne touche plus à la libpthread, mais ça se trouve assez aisément sur le Net, et avec un cours : http://www-igm.univ-mlv.fr/%7Edr/NCS/ (c'est celui d'un de mes profs, plein de faute, mais c'est normal ) Lien vers le commentaire Partager sur d’autres sites More sharing options...
SuperPat Posté(e) le 5 février 2006 Partager Posté(e) le 5 février 2006 Une solution serait de faire un timer (j'utilise wxwidgets pour faire mes fenêtre et elle contient toutes les classes nécessaire pour les tacheck, semaphore, time....) Lien vers le commentaire Partager sur d’autres sites More sharing options...
naparuba Posté(e) le 6 février 2006 Partager Posté(e) le 6 février 2006 Un select avec un timeout ??? Le select te permet de reprendre la main si tu as une activité sur un file descriptor (un fichier en gros), donc ca peut être utile si ce que tu "attends" est un fichier (ou un socket), pour les interfaces graphiques on peut aussi utiliser les 2 a la fois (le select qui a dans sa liste un file descriptor de l'interface pour qu'elle puisse faire son "boulot" ) J'ai été assez clair? (j'ai pas pris mon café encore, donc bon... ) Sinon le threads c'esr bien aussi, mais attention aux resources partagés, perso, au moment où je peux faire avec un select j'évite les threads (trop galère à débugguer les threads ), sauf quand c'est un besoin de perf ou vraiment une appli distribuée (là bon c'est pas pareil ) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Baldurien Posté(e) le 6 février 2006 Partager Posté(e) le 6 février 2006 Le problèmes des threads c'est leur implantation surtout... fait du Java ! :) Lien vers le commentaire Partager sur d’autres sites More sharing options...
naparuba Posté(e) le 6 février 2006 Partager Posté(e) le 6 février 2006 C'est vrai que le Java gère très bien cela "tout seul" (bon il faut un peu l'aider sur les objets distribués, mais bon c'est normal) question mutex and co. mais bon j'aime bien que mes applis avancent.. , désolé, j'ai pas pu m'empécher :-) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Baldurien Posté(e) le 6 février 2006 Partager Posté(e) le 6 février 2006 Java + JNI roh (moi j'aime bien que mes applis soient portables, et qu'on me parle pas de GTK) Lien vers le commentaire Partager sur d’autres sites More sharing options...
naparuba Posté(e) le 7 février 2006 Partager Posté(e) le 7 février 2006 Java + JNI roh (moi j'aime bien que mes applis soient portables, et qu'on me parle pas de GTK) <HS> Héhé, perso mes applis n'on pas souvent des interfaces Sinon, JNI c'est bien alors? </HS> Sinon pour en revenir au sujet (qui a changé ) tu as une structure timeval NAME sys/time.h - time types SYNOPSIS #include <sys/time.h> DESCRIPTION The <sys/time.h> header defines the timeval structure that includes at least the following members: time_t tv_sec seconds suseconds_t tv_usec microseconds (time_t c'est u32 ou u64 déjà?), enfin bref, un printf te le dira , donc tu fais un gettimeofday(struct timeval *tv, struct timezone *tz); (tz tu mets NULL, tu t'en fiches un peu ici), ca rempli ton tv. Ensuite tu créé un autre tv pour ton futur interval (alors je ne sais plus si le select prend un diff de tv ou le tv auquel il doit se reveiller, à tester donc.. ), sinon sleep (mais je sais pas s'il prends un tv). Ensuite, pour la boucle, à toi de jouer J'ai été assez clair ? Pour une réponse avec thread, je laisse la main (5ms ca va pas être tendu à respecter en Java? déjà qu'en C ca va être chaud...) c'était pas un , juste une demande Lien vers le commentaire Partager sur d’autres sites More sharing options...
Baldurien Posté(e) le 7 février 2006 Partager Posté(e) le 7 février 2006 ms = milliseconde, non? Sachant qu'un ordi fait je sais plus combien d'instructions en une milliseconde, ça devrait aller? puis bon le temps réel dans un ordinateur... Lien vers le commentaire Partager sur d’autres sites More sharing options...
scum.bar Posté(e) le 7 février 2006 Partager Posté(e) le 7 février 2006 java... utilisez des vrais langages (python, perl, ruby, ...). Pour le sleep précis, il y a usleep et nanosleep. Pour les processus : fork, vfork, clone. Pour les threads : pthread_create, pthread_join, pthread_exit etc. Si tu as la chance d'avoir un BSD (ou un autre Unix comme Linux ou Mac), regarde les manpages (en français). Sinon tu en a en ligne (en anglais) : http://linux.ctyme.com/man/man3694.htm http://linux.ctyme.com/man/man2128.htm etc... http://linux.ctyme.com/cgi-swish/linuxdoc.cgi Lien vers le commentaire Partager sur d’autres sites More sharing options...
Baldurien Posté(e) le 8 février 2006 Partager Posté(e) le 8 février 2006 tu parle de python quand celui-ci permet de faire du code java? de perl quand celui-ci est lié à la raison social de ses utilisateurs? :) (et puis, pour une application durable (ie: autre que web), le reference counting (= garbage collector de python & perl) c'est performant mais bonjour la perte de mémoire dans les cycles. (ensuite, pas fait ni l'un ni l'autre, et pas édutier Ruby) (mais Java c'est Eclipse surtout ) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.