begin process at 2012 05 30 13:47:13
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Systeme

 > 

thread "permanent"


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

thread "permanent"

jeudi 11 novembre 2004 à 15:09:20 | thread "permanent"

Spiffou

salut,
je cherche à effectuer un traitement par thread.
le traitement effectué par le thread doit se faire sans arret depuis son lancement jusqu'a une demande d'arret.
quelle est donc la méthode à employer sachant que le but est d'économiser le plus possible les ressources systemes?

1-un thread qui boucle avec à chaque iteration une verification sur un event signalant qu'il faut s'arreter?
bien sur dans le thread je me un Sleep(100) pour ne prendre qu'un echantillon par 10ms et eviter une occupation des ressources maximale.

2-une boucle qui appelle le thread tant qu'on en a besoin (le thread ne fait qu'une iteration puis se ferme, il est ensuite reouvert a iteration suivante)

3-une autre methode... peut etre que l'on peut arreter un thread sur un msg particulier, mais cela revient un peu à la solution 1. surtout que j'ai lu qu'il ne fallait ps detruire les thread à la sauvage...

ps: le traitement effectué par le thread est une capture d'image qui est copiée en Ram et envoyée à un autre module.
jeudi 11 novembre 2004 à 15:56:16 | Re : thread "permanent"

vecchio56

Administrateur CodeS-SourceS
Sans hésitation je prendrais la première solution, avec une variable globale BOOL qu'on met a FALSE quand on doit arrêter le thread
jeudi 11 novembre 2004 à 16:02:24 | Re : thread "permanent"

AlexMAN

Membre Club
moi j'utiliserais un event...Bocou mieux kun booléen ki pompe ttes les ressources...
jeudi 11 novembre 2004 à 16:22:58 | Re : thread "permanent"

BruNews

Administrateur CodeS-SourceS
AlexMAN > pas compris ta remarque. La verif a chaque tour si reprendre ou sortie ne bouffe rien, non ?

ciao...
BruNews, MVP VC++
jeudi 11 novembre 2004 à 16:50:05 | Re : thread "permanent"

AlexMAN

Membre Club
Dis moi si jme trompe, regarde ce bout de code (ki montre ce ke vecchio veut faire, l'histoire du booléen), jviens de tester et l'utilisation du processeur est de 98% :

BOOL b = 0;

/*-- programme --*/
DWORD WINAPI Thread_Test( LPVOID lpParam )
{
int inc=0;
char *szbuff;

szbuff = (char *)malloc(4);
if (!szbuff)
return 1;

do
{
inc++;
szbuff = itoa(inc, szbuff, 10);
SetWindowText(hstatus, szbuff);
}while( !b );

free(szbuff);

MessageBox(NULL, "Arret du thread.", "Stop", 0x40);
return 0;
}

BOOL CALLBACK AppDlgProc(HWND hdlg, UINT mssg, WPARAM wParam, LPARAM lParam)
{
switch(mssg) {
case WM_INITDIALOG:
SetClassLong(hdlg, GCL_HICON, (long)LoadIcon(0, IDI_APPLICATION));
hstatus = GetDlgItem(hdlg, IDC_STATUS);
return 1;
case WM_COMMAND:
switch(wParam) {
case IDC_START:
/*-- création de l'évenenment indiquant que l'on souhaite arrêter le thread --*/
/*-- on créer le thread --*/
CreateThread(NULL, 0, &Thread_Test, NULL,NULL, &Thread_TestID);
return 0;
case IDC_STOP:
/*-- on génère un event --*/
b = 1;
return 0;
case IDCANCEL: EndDialog(hdlg, 0);
}
}
return 0;
}

int WINAPI WinMain(HINSTANCE hinst, HINSTANCE, PSTR, int)
{
DialogBoxParam(hinst, (LPCTSTR)IDD_APP, 0, AppDlgProc, 0);
return 0;
}


Dites moi si jme trompe...

++

PS : vecchio vient de me parler de Sleep, mais je trouve ca plutot moche...

jeudi 11 novembre 2004 à 16:50:28 | Re : thread "permanent"

vecchio56

Administrateur CodeS-SourceS
C'est WaitForSingleObject qui fait perdre du temps
jeudi 11 novembre 2004 à 16:55:29 | Re : thread "permanent"

AlexMAN

Membre Club
Mais des fonctions de synchro sont presentes, pkoi ne pas les utiliser ?

Brunews, si tu pouvais nous expliker kel est la meilleure solution, et si tu ne va pas dans mon sens, pkoi ? en koi les fonctions de synchro ne sont pas les 'meilleurs' ?

Merci et dsl si j'ai dit une betise..

++
jeudi 11 novembre 2004 à 16:56:29 | Re : thread "permanent"

BruNews

Administrateur CodeS-SourceS
La question etait avec un: Sleep(100) et on verifie le BOOL seulement derriere.
Pour une super gestion faudra SuspendThread(), ResumeThread() avec synchro impec.


ciao...
BruNews, MVP VC++
jeudi 11 novembre 2004 à 17:46:34 | Re : thread "permanent"

Spiffou

merci pour vos reponses...

j'avais dans l'idee d'utiliser un msg avec peekmsg qui ferait une verif tte les 10 itérations par exple, mais ca me semble un peu bourrin.

ou alors un event qui met à jour la condition de la boucle du thread et declenche donc l'arret de celui ci...


dans tt les cas on est d'accord pour dire qu'il est mauvais de lancer le thread à chaque itération plutot que d'inséerer la boucle dans le thread.

j'ai bien compris?


merci encore


Cette discussion est classée dans : traitement, thread, effectué, permanent, iteration


Répondre à ce message

Sujets en rapport avec ce message

Passage d'argument à un thread [ par Spiffou ] salut à tous,j'ai besoin d'utiliser des threads pour effectuer un traitement en parallele, le pb c'est que ce traitement est une methode mais que je n thread et options de compilation [ par khayyam ] bonsoir tout le mondeje cherche à utiliser les threads avec devc++je créé donc un tread threadName = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)thr Synchronisation!!! [ par PunkDude424 ] J'ai un problème avec la synchronisation de ThreadVoilà, je fais un "ScreenSaver" qui affiche des point a des temps radom et dune durée random aussi.. Thread aol [ par NeoUmbrella ] Salut, voila j'aimerais recupere les noms des personnes presentes en salon aol.Les pseudos sont inscrits dans une listbox, pas de probleme pour trouv Traitement d'image : Detection de contour [ par Bambi07 ] je cherche à déterminer les contours d'un objet dans une image en niveaux de gris.Tous les pixels de l'objet sont quasiment au meme niveau de gris et Traitement d'image .pgm sous Windows XP Home [ par Toto_15l ] Bonjour a tous ! Je débute en programmation C et je dois travailler sur des images pgm : copier l'image d'un dossier vers un autre et inverser les cou Traitement d'une vidéo *.mpg [ par elflink ] Bonjour à tous,Moi et tous mes amis ( <I Priorité et thread [ par obasileus ] Salut, j'ai un programme qui tourne avec 2 thread utilisant une même ressource partagé. Je voudrai privilégier l'execution d'un des deux thread car d thread, mutex et variable partagée [ par bloobird0 ] hello all,je suis en train d'expérimenter pour la première fois les threads en C sous Windows et je voudrais confirmation ou remarques sur ce qui suit Vitesse de traitement entre _write et fwrite [ par PeteTheBull ] Bonjour Dans mon programme, je sauvegarde des données (issues d'une acquisition video) sur mon disque soit en utilisant la fonction "_write", soit en


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,482 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales