Dois-je utiliser un thread ?

Signaler
Messages postés
21
Date d'inscription
mercredi 13 avril 2005
Statut
Membre
Dernière intervention
25 mai 2005
-
Messages postés
21
Date d'inscription
mercredi 13 avril 2005
Statut
Membre
Dernière intervention
25 mai 2005
-
dans le prog que je fais, j'appelle une fonction de comptage qui peut durée plusieurs heures, elle est lancée quand j'appuye sur run dans le menu. mais dès lors, toute l'uc est pris pour compté et si par exemple je click sur réduction de la fenêtre ou n'importe quelle action, ça plante.

je me suis dit qu'un thread serait bien, mais dans les définissions j'ai vu que cette fonction prennait un paramètre, ça je m'en fout, je veux juste qu'il puisse exécuter la fonction qui elle demande 2 paramètre et renvoi 1. C'est possible de lancer une fonction dans un thread ? si oui comment je lui donne les paramètres à donner à la fonction de comptage ( car ces paramètres sont définis avant dans des édit ) ???

sinon au pire je pensait juste mettre un button annuler qui permettrait de revenir à la fenêtre initiale mais pareil, comment faire en sorte que le click soit pris en compte sans que tout bug ? encore un thread ?

si quelqu'un peut me donner quelques infos se serait cool
merci

Easy love Baby

3 réponses

Messages postés
59
Date d'inscription
dimanche 19 décembre 2004
Statut
Membre
Dernière intervention
1 septembre 2006

Dans la boucle la plus longue, essaye d'ajoutter une pause d'une millisec par boucle...
Grâce à cette pause, ta boucle libèrera le processeur juste assez longtemps pour laisser bosser les autres...
Sous Visual cpp, c'est Sleep(n), avec n en milli secondes.
Messages postés
202
Date d'inscription
dimanche 18 mai 2003
Statut
Membre
Dernière intervention
6 mars 2010

ou avec un thread mais en priorité basse ce qui te laissera tu temps
pour les autres application tout en ayant un controle sur le thread.
Pour controler un thread --> une application fenetré toute
bête permettant par exemple de stopper ton programme. et Comme elle est
gérer par des messages elle utilise quasiment aucun temp processeur.

Voili,Voilou
Messages postés
21
Date d'inscription
mercredi 13 avril 2005
Statut
Membre
Dernière intervention
25 mai 2005
1
j'ai utilisé Sleep, mais rien de neuf, il bug toujours, par contre c'est vrai que l'uc est partiellement libérée. J'hésite toujours à utiliser un thread : peut-t-on lui passer plusieurs variables pour qu'il puisse lui même les utiliser ?
Je m'explique : je veut qu'il fasse un threads avec ça :

while (nb < nNbAcquisitions)
{
t0 = time(NULL);
t1 = time(NULL);
while ( difftime (t0+nDuree*60,t1)>0)
{
k = DllFunc3(&b);
while(b!=2)
{
Sleep(100);
k = DllFunc3(&b);
}
j++;
Sleep(500);

if (j%2==0)SetCursor(LoadCursor(hThisInstance, IDC_HAND));
else SetCursor(LoadCursor(hThisInstance, IDC_WAIT));
t1 = time(NULL);
}

/* on en fait une moyenne */

Moyenne=j/nDuree;
if (!Moyenne)
{
MessageBox(hwnd,"aucun signal détecté\n"
"vérifier la mise en place du capteur\n"
"ou la connection USB","attention...",
MB_OK | MB_ICONWARNING);
return(0);
}

Sleep(nIntervalle*60000);
/* on affiche cette valeur dans un box */

*itoa(Moyenne, szMoyenne, 10 );
SetWindowText(hWndEditMoyenne,szMoyenne );
SetFocus( hWndEditMoyenne);

/* on incrémente l'indicateur de nombre d'opérations effectuées */
nb++;

/* on sauvergarde la donnée */

fprintf(fp,
"\nacquisition[%d] = %d bats/min",
nb,Moyenne);

}

mais peut-t-on (et comment ) lui passer les paramètres à utiliser: nDuree, nIntervalle et nbAcquisition qui eux sont déterminés plus tôt par l'utilisateur. Mais déjà là avec mes Sleep, ça devrai marcher non ?
merci si quelqu'un peut m'éclairer
Easy love Baby