Bonjour,
Dans le cadre d'une application qui doit lire l'état du port parallèle
à une fréquence fixe (~10µs), je suis à la recherche d'un moyen
d'obtenir un timer plus "granuleux" que tous les timers standard
disponibles dans Windows (qui sont pour les plus fins à la ms près!).
La seule chose que j'ai trouvé pour l'instant, c'est de faire une
boucle (tant que le temps écoulé depuis la dernière action est < ...),
en prenant directement un calcul sur le nombre de "ticks" processeurs
écoulés depuis la dernière lecture Pour cela j'utilise les routines
QueryPerformanceCounter et QueryPerformanceFrequency.
N'y a-t-il pas d'autre moyen de faire cela? L'idéal serait d'avoir un
handler déclenché toutes les 10µs, et de réaliser la lecture à ce
moment là.
Sinon, y-a-t-il possibilité d'utiliser des routines propres au port
parallèle directement?
J'en suis à essayer avec des morceaux d'assembleur!!!
Bonjour,
Dans le cadre d'une application qui doit lire l'état du port parallèle
à une fréquence fixe (~10µs), je suis à la recherche d'un moyen
d'obtenir un timer plus "granuleux" que tous les timers standard
disponibles dans Windows (qui sont pour les plus fins à la ms près!).
La seule chose que j'ai trouvé pour l'instant, c'est de faire une
boucle (tant que le temps écoulé depuis la dernière action est < ...),
en prenant directement un calcul sur le nombre de "ticks" processeurs
écoulés depuis la dernière lecture Pour cela j'utilise les routines
QueryPerformanceCounter et QueryPerformanceFrequency.
N'y a-t-il pas d'autre moyen de faire cela? L'idéal serait d'avoir un
handler déclenché toutes les 10µs, et de réaliser la lecture à ce
moment là.
Sinon, y-a-t-il possibilité d'utiliser des routines propres au port
parallèle directement?
J'en suis à essayer avec des morceaux d'assembleur!!!
Bonjour,
Dans le cadre d'une application qui doit lire l'état du port parallèle
à une fréquence fixe (~10µs), je suis à la recherche d'un moyen
d'obtenir un timer plus "granuleux" que tous les timers standard
disponibles dans Windows (qui sont pour les plus fins à la ms près!).
La seule chose que j'ai trouvé pour l'instant, c'est de faire une
boucle (tant que le temps écoulé depuis la dernière action est < ...),
en prenant directement un calcul sur le nombre de "ticks" processeurs
écoulés depuis la dernière lecture Pour cela j'utilise les routines
QueryPerformanceCounter et QueryPerformanceFrequency.
N'y a-t-il pas d'autre moyen de faire cela? L'idéal serait d'avoir un
handler déclenché toutes les 10µs, et de réaliser la lecture à ce
moment là.
Sinon, y-a-t-il possibilité d'utiliser des routines propres au port
parallèle directement?
J'en suis à essayer avec des morceaux d'assembleur!!!
> Bonjour,
Dans le cadre d'une application qui doit lire l'état du port parallèle
à une fréquence fixe (~10µs), je suis à la recherche d'un moyen
d'obtenir un timer plus "granuleux" que tous les timers standard
disponibles dans Windows (qui sont pour les plus fins à la ms près!).
La seule chose que j'ai trouvé pour l'instant, c'est de faire une
boucle (tant que le temps écoulé depuis la dernière action est < ...),
en prenant directement un calcul sur le nombre de "ticks" processeurs
écoulés depuis la dernière lecture Pour cela j'utilise les routines
QueryPerformanceCounter et QueryPerformanceFrequency.
N'y a-t-il pas d'autre moyen de faire cela? L'idéal serait d'avoir un
handler déclenché toutes les 10µs, et de réaliser la lecture à ce
moment là.
Sinon, y-a-t-il possibilité d'utiliser des routines propres au port
parallèle directement?
J'en suis à essayer avec des morceaux d'assembleur!!!
Précision: sous Win2k & XP!
> Bonjour,
Dans le cadre d'une application qui doit lire l'état du port parallèle
à une fréquence fixe (~10µs), je suis à la recherche d'un moyen
d'obtenir un timer plus "granuleux" que tous les timers standard
disponibles dans Windows (qui sont pour les plus fins à la ms près!).
La seule chose que j'ai trouvé pour l'instant, c'est de faire une
boucle (tant que le temps écoulé depuis la dernière action est < ...),
en prenant directement un calcul sur le nombre de "ticks" processeurs
écoulés depuis la dernière lecture Pour cela j'utilise les routines
QueryPerformanceCounter et QueryPerformanceFrequency.
N'y a-t-il pas d'autre moyen de faire cela? L'idéal serait d'avoir un
handler déclenché toutes les 10µs, et de réaliser la lecture à ce
moment là.
Sinon, y-a-t-il possibilité d'utiliser des routines propres au port
parallèle directement?
J'en suis à essayer avec des morceaux d'assembleur!!!
Précision: sous Win2k & XP!
> Bonjour,
Dans le cadre d'une application qui doit lire l'état du port parallèle
à une fréquence fixe (~10µs), je suis à la recherche d'un moyen
d'obtenir un timer plus "granuleux" que tous les timers standard
disponibles dans Windows (qui sont pour les plus fins à la ms près!).
La seule chose que j'ai trouvé pour l'instant, c'est de faire une
boucle (tant que le temps écoulé depuis la dernière action est < ...),
en prenant directement un calcul sur le nombre de "ticks" processeurs
écoulés depuis la dernière lecture Pour cela j'utilise les routines
QueryPerformanceCounter et QueryPerformanceFrequency.
N'y a-t-il pas d'autre moyen de faire cela? L'idéal serait d'avoir un
handler déclenché toutes les 10µs, et de réaliser la lecture à ce
moment là.
Sinon, y-a-t-il possibilité d'utiliser des routines propres au port
parallèle directement?
J'en suis à essayer avec des morceaux d'assembleur!!!
Précision: sous Win2k & XP!
Bonjour,
Dans le cadre d'une application qui doit lire l'état du port parallèle
à une fréquence fixe (~10µs), je suis à la recherche d'un moyen
d'obtenir un timer plus "granuleux" que tous les timers standard
disponibles dans Windows (qui sont pour les plus fins à la ms près!).
La seule chose que j'ai trouvé pour l'instant, c'est de faire une
boucle (tant que le temps écoulé depuis la dernière action est < ...),
en prenant directement un calcul sur le nombre de "ticks" processeurs
écoulés depuis la dernière lecture Pour cela j'utilise les routines
QueryPerformanceCounter et QueryPerformanceFrequency.
N'y a-t-il pas d'autre moyen de faire cela? L'idéal serait d'avoir un
handler déclenché toutes les 10µs, et de réaliser la lecture à ce
moment là.
Sinon, y-a-t-il possibilité d'utiliser des routines propres au port
parallèle directement?
J'en suis à essayer avec des morceaux d'assembleur!!!
Précision: sous Win2k & XP!
Merci d'avance pour des pistes!
Christophe
Bonjour,
Dans le cadre d'une application qui doit lire l'état du port parallèle
à une fréquence fixe (~10µs), je suis à la recherche d'un moyen
d'obtenir un timer plus "granuleux" que tous les timers standard
disponibles dans Windows (qui sont pour les plus fins à la ms près!).
La seule chose que j'ai trouvé pour l'instant, c'est de faire une
boucle (tant que le temps écoulé depuis la dernière action est < ...),
en prenant directement un calcul sur le nombre de "ticks" processeurs
écoulés depuis la dernière lecture Pour cela j'utilise les routines
QueryPerformanceCounter et QueryPerformanceFrequency.
N'y a-t-il pas d'autre moyen de faire cela? L'idéal serait d'avoir un
handler déclenché toutes les 10µs, et de réaliser la lecture à ce
moment là.
Sinon, y-a-t-il possibilité d'utiliser des routines propres au port
parallèle directement?
J'en suis à essayer avec des morceaux d'assembleur!!!
Précision: sous Win2k & XP!
Merci d'avance pour des pistes!
Christophe
Bonjour,
Dans le cadre d'une application qui doit lire l'état du port parallèle
à une fréquence fixe (~10µs), je suis à la recherche d'un moyen
d'obtenir un timer plus "granuleux" que tous les timers standard
disponibles dans Windows (qui sont pour les plus fins à la ms près!).
La seule chose que j'ai trouvé pour l'instant, c'est de faire une
boucle (tant que le temps écoulé depuis la dernière action est < ...),
en prenant directement un calcul sur le nombre de "ticks" processeurs
écoulés depuis la dernière lecture Pour cela j'utilise les routines
QueryPerformanceCounter et QueryPerformanceFrequency.
N'y a-t-il pas d'autre moyen de faire cela? L'idéal serait d'avoir un
handler déclenché toutes les 10µs, et de réaliser la lecture à ce
moment là.
Sinon, y-a-t-il possibilité d'utiliser des routines propres au port
parallèle directement?
J'en suis à essayer avec des morceaux d'assembleur!!!
Précision: sous Win2k & XP!
Merci d'avance pour des pistes!
Christophe
(si je me gourre, AMcD me corrigera)...
d'où le secret de
la vélocité sous windows, faire des taches (ou partie de tache) qui
se finissent avant le timeslice.
(si je me gourre, AMcD me corrigera)...
d'où le secret de
la vélocité sous windows, faire des taches (ou partie de tache) qui
se finissent avant le timeslice.
(si je me gourre, AMcD me corrigera)...
d'où le secret de
la vélocité sous windows, faire des taches (ou partie de tache) qui
se finissent avant le timeslice.
Tout ceci est assez compliqué, faut bien le dire. Aujourd'hui, on appelle
cela un quantum (quanta en french je suppose). C'est donc le temps qu'un
thread a pour s'exécuter avant que le kernel vérifie s'il doit passer la
main à un autre thread ou laisser celui en cours continuer.
Chez moi, ça donne 10.014400 ms.
Tout ceci est assez compliqué, faut bien le dire. Aujourd'hui, on appelle
cela un quantum (quanta en french je suppose). C'est donc le temps qu'un
thread a pour s'exécuter avant que le kernel vérifie s'il doit passer la
main à un autre thread ou laisser celui en cours continuer.
Chez moi, ça donne 10.014400 ms.
Tout ceci est assez compliqué, faut bien le dire. Aujourd'hui, on appelle
cela un quantum (quanta en french je suppose). C'est donc le temps qu'un
thread a pour s'exécuter avant que le kernel vérifie s'il doit passer la
main à un autre thread ou laisser celui en cours continuer.
Chez moi, ça donne 10.014400 ms.
Vincent Burel wrote:(si je me gourre, AMcD me corrigera)...
Tout ceci est assez compliqué, faut bien le dire. Aujourd'hui, on appelle
cela un quantum (quanta en french je suppose).
Il faudrait parler de la préemption, de la sauvegarde de contexte, des thread
"idle", des completion I/O, des priorités, des attentes (events, semaphore,
etc.), etc.
Vincent Burel wrote:
(si je me gourre, AMcD me corrigera)...
Tout ceci est assez compliqué, faut bien le dire. Aujourd'hui, on appelle
cela un quantum (quanta en french je suppose).
Il faudrait parler de la préemption, de la sauvegarde de contexte, des thread
"idle", des completion I/O, des priorités, des attentes (events, semaphore,
etc.), etc.
Vincent Burel wrote:(si je me gourre, AMcD me corrigera)...
Tout ceci est assez compliqué, faut bien le dire. Aujourd'hui, on appelle
cela un quantum (quanta en french je suppose).
Il faudrait parler de la préemption, de la sauvegarde de contexte, des thread
"idle", des completion I/O, des priorités, des attentes (events, semaphore,
etc.), etc.
Chez moi, ça donne 10.014400 ms.
Veux-tu dire qu'un thread tourne au maximun 10 ms (sauf s'il se
termine avant) et que ce n'est qu'au bout de ces 10 ms que l'OS
switche sur un autre thread?
Dans mon gestionnaire des tâches, il est renseigné que j'ai pour le
moment 646 threads qui tournent. Ca voudrait dire qu'il faut 6.5 s
pour que tous les threads aient eu le temps de tourner une seule
fois. Mon système devrait être complètement 'unresponsive', non?
Je ne me suis jamais très intéressé à ce truc mais je devrais, je le
sens.
Chez moi, ça donne 10.014400 ms.
Veux-tu dire qu'un thread tourne au maximun 10 ms (sauf s'il se
termine avant) et que ce n'est qu'au bout de ces 10 ms que l'OS
switche sur un autre thread?
Dans mon gestionnaire des tâches, il est renseigné que j'ai pour le
moment 646 threads qui tournent. Ca voudrait dire qu'il faut 6.5 s
pour que tous les threads aient eu le temps de tourner une seule
fois. Mon système devrait être complètement 'unresponsive', non?
Je ne me suis jamais très intéressé à ce truc mais je devrais, je le
sens.
Chez moi, ça donne 10.014400 ms.
Veux-tu dire qu'un thread tourne au maximun 10 ms (sauf s'il se
termine avant) et que ce n'est qu'au bout de ces 10 ms que l'OS
switche sur un autre thread?
Dans mon gestionnaire des tâches, il est renseigné que j'ai pour le
moment 646 threads qui tournent. Ca voudrait dire qu'il faut 6.5 s
pour que tous les threads aient eu le temps de tourner une seule
fois. Mon système devrait être complètement 'unresponsive', non?
Je ne me suis jamais très intéressé à ce truc mais je devrais, je le
sens.
Non. Regarde bien ton gestionnaire de tâche, il y a des centaines de threads
qui ne font rien qu'attendre. Ils sont donc jamais préemptés si, par
exemple, aucun message ne leur est destiné.
Non. Regarde bien ton gestionnaire de tâche, il y a des centaines de threads
qui ne font rien qu'attendre. Ils sont donc jamais préemptés si, par
exemple, aucun message ne leur est destiné.
Non. Regarde bien ton gestionnaire de tâche, il y a des centaines de threads
qui ne font rien qu'attendre. Ils sont donc jamais préemptés si, par
exemple, aucun message ne leur est destiné.
AMcD® wrote:
> Non. Regarde bien ton gestionnaire de tâche, il y a des centaines de
> qui ne font rien qu'attendre. Ils sont donc jamais préemptés si, par
> exemple, aucun message ne leur est destiné.
Ca doit être le cas puisque effectivement, mon système répond bien et ne
semble pas lent. Du coup, je suis allé relire ce qu'en disait
(brièvement) J.Richter dans son bouquin 'Programming applications for
Windows' et ça semble bien être comme ça que ça se passe.
AMcD® wrote:
> Non. Regarde bien ton gestionnaire de tâche, il y a des centaines de
> qui ne font rien qu'attendre. Ils sont donc jamais préemptés si, par
> exemple, aucun message ne leur est destiné.
Ca doit être le cas puisque effectivement, mon système répond bien et ne
semble pas lent. Du coup, je suis allé relire ce qu'en disait
(brièvement) J.Richter dans son bouquin 'Programming applications for
Windows' et ça semble bien être comme ça que ça se passe.
AMcD® wrote:
> Non. Regarde bien ton gestionnaire de tâche, il y a des centaines de
> qui ne font rien qu'attendre. Ils sont donc jamais préemptés si, par
> exemple, aucun message ne leur est destiné.
Ca doit être le cas puisque effectivement, mon système répond bien et ne
semble pas lent. Du coup, je suis allé relire ce qu'en disait
(brièvement) J.Richter dans son bouquin 'Programming applications for
Windows' et ça semble bien être comme ça que ça se passe.