Utilisation des threads via l'API. Je mets ce code parce que j'avais remarqué que les autres sources traitant du sujet ne fonctionnaient pas. LA SOURCE DOIT ËTRE COMPILEE EN P-CODE ! Ce code n'est pas de moi.
cs_cosmic
Messages postés61Date d'inscriptionmercredi 30 octobre 2002StatutMembreDernière intervention16 mai 2005 28 nov. 2002 à 13:45
Qu'est-ce que des THREADS?
Compilé en P-CODE, qu'est-ce que ça change par rapport au autres types de compilations?
Proger
Messages postés248Date d'inscriptionvendredi 10 novembre 2000StatutMembreDernière intervention19 décembre 2008 28 nov. 2002 à 14:59
Copie le code source à la place d'écrire "ziiiiiiiiip" car vu la longueur de la source ce n'est pas utile de bourrer son dossier temp !
Cette source est excellente car elle montre :
- la création d'un thread secondaire
- le passage de paramètres à un thread secondaire
- l'utilisation de waitforsingleobjet pour "synchronisé" l'application avec le déroulement d'un thread
par contre l'exemple est un peu bidon... 9/10
Thread ? pour faire simple : c'est un pointeur d'exécution (la ligne jaune quand tu fais ctrl+pause et F8 pour la faire avançé, c'est une sorte de pointeur d'exécution).
Crée un second thread et tu auras 2 pointeurs d'exécution, ce qui permet de faire des choses en même temps.
En VB on utilise doevents pour reprendre la main sur la form si on lance un gros traitement. Si tu lance le gros traitement dans un thread secondaire, plus besoin de doevents!
P-Code : ça ne compile pas le vb intégralement en langage asm (ni le code natif d'ailleur), et laisse les dll s'occuper de l'interprétation du "pseudo-code" ainsi créé.
Qui dit interpretation dit temps, donc le p-code est moins rapide que le code natif.
Afyn
Messages postés608Date d'inscriptionsamedi 3 août 2002StatutMembreDernière intervention22 décembre 2016 28 nov. 2002 à 17:48
La fonction sleep est en milliseconde, y a t'il une fonction équivalente en microseconde ?
A+
AFYN
NAVEDAC
couriousous
Messages postés68Date d'inscriptionlundi 21 mai 2001StatutMembreDernière intervention 4 janvier 2003 28 nov. 2002 à 19:24
ouai... les thread evc VB6 c bien beau mais dès que tu utilise un objet ( tel que winsock ) ca plante total!!! la seule solution c'est d'utiliser les API.... snif
Proger
Messages postés248Date d'inscriptionvendredi 10 novembre 2000StatutMembreDernière intervention19 décembre 2008 28 nov. 2002 à 19:51
Afyn > oui et non....
Il existe une api qui prélève une valeur de temps. En prélèvant le temps à un autre moment, par calcul on obtient la durée qui s'est écoulé entre les deux.
GetTickCount prélève des millisecondes, soit 1000 par seconde
QueryPerformanceCounter renvoi un "truc, et QueryPerformanceFrequency indique le nombre de "truc" qui s'écoule pendant 1 secondes (chez moi j'en ai 3579545 par seconde) donc par calcul on peut en déduire le temps.
Sous vb, en appelant 2 fois de suite cet api j'obtient 1,03 µs écoulé entre les deux. Bref la microseconde est possible, mais rien que l'appel à une fonction dure déjà une microseconde. Ainsi, en codant un équivalent de sleep avec QueryTruc, on peut espérer une résolution de 10 microsecondes...
J'enverrai une source demain ça sera mieux qu'en commentaire
28 nov. 2002 à 13:45
Compilé en P-CODE, qu'est-ce que ça change par rapport au autres types de compilations?
28 nov. 2002 à 14:59
Cette source est excellente car elle montre :
- la création d'un thread secondaire
- le passage de paramètres à un thread secondaire
- l'utilisation de waitforsingleobjet pour "synchronisé" l'application avec le déroulement d'un thread
par contre l'exemple est un peu bidon... 9/10
Thread ? pour faire simple : c'est un pointeur d'exécution (la ligne jaune quand tu fais ctrl+pause et F8 pour la faire avançé, c'est une sorte de pointeur d'exécution).
Crée un second thread et tu auras 2 pointeurs d'exécution, ce qui permet de faire des choses en même temps.
En VB on utilise doevents pour reprendre la main sur la form si on lance un gros traitement. Si tu lance le gros traitement dans un thread secondaire, plus besoin de doevents!
P-Code : ça ne compile pas le vb intégralement en langage asm (ni le code natif d'ailleur), et laisse les dll s'occuper de l'interprétation du "pseudo-code" ainsi créé.
Qui dit interpretation dit temps, donc le p-code est moins rapide que le code natif.
28 nov. 2002 à 17:48
A+
AFYN
NAVEDAC
28 nov. 2002 à 19:24
28 nov. 2002 à 19:51
Il existe une api qui prélève une valeur de temps. En prélèvant le temps à un autre moment, par calcul on obtient la durée qui s'est écoulé entre les deux.
GetTickCount prélève des millisecondes, soit 1000 par seconde
QueryPerformanceCounter renvoi un "truc, et QueryPerformanceFrequency indique le nombre de "truc" qui s'écoule pendant 1 secondes (chez moi j'en ai 3579545 par seconde) donc par calcul on peut en déduire le temps.
Sous vb, en appelant 2 fois de suite cet api j'obtient 1,03 µs écoulé entre les deux. Bref la microseconde est possible, mais rien que l'appel à une fonction dure déjà une microseconde. Ainsi, en codant un équivalent de sleep avec QueryTruc, on peut espérer une résolution de 10 microsecondes...
J'enverrai une source demain ça sera mieux qu'en commentaire
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.