CodeS-SourceS est hébergé par Frontier

Publicité

5 couteaux Suisse-clé USB à gagner !

Le magazine Programmez! et CodeS-SourceS lancent conjointement un mini sondage pour mieux connaître vos outils favoris.
Sont en jeu 5 clés USB (Couteau-Suisse) offert par le magazine Programmez! et Swissbit

Pour participer cliquez ici. Merci d'avance pour votre participation à ce sondage !

 Stats

545 421 membres
498 nouveaux aujourd'hui
6 317 membres club

Authentification


Nom d'utilisateur :
Mot de passe :

Mot de passe oublié ? / Activation de compte
Créer un compte

Pub

 Rechercher sur le site

Rechercher avec :

[ Dernières recherches ]

STOP THREAD [DEMANDE FORUM]


 Information sur la source

Note :

8,00/10

12345678910
Catégorie de cette source : API
Auteur : Arnotic [Site perso][Ecrire un message]
Niveau de la source : Débutant
Date création : 23/02/2004 20:35:34
Date de mise à jour : 25/10/2005 15:11:54
Vue 1942 fois
Commentaire sur cette source (19)
Ajouter votre commentaire sur cette source
Donnez une note à cette source :
Assigner la note de 1 sur 10Assigner la note de 2 sur 10Assigner la note de 3 sur 10Assigner la note de 4 sur 10Assigner la note de 5 sur 10Assigner la note de 6 sur 10Assigner la note de 7 sur 10Assigner la note de 8 sur 10Assigner la note de 9 sur 10Assigner la note de 10 sur 10

 Description

Se trouve aussi ici: http://www.dev.winsysdev.com/

Voici une source qui créer un thread. Ce thread compte jusqu'a 100 puis se termine. Mais on peut cliquer sur un bouton "Stop" pour arreter prématurément le traitement...

 Explication finale

Amusez-vous bien :-)

 Fichier ZIP

Pour les "Membres Club", vous pouvez consulter directement le contenu du zip sans télécharger le zip !
FichierTailleVoirTélécharger
Release/StopThread.exe23 040 octets  Télécharger ce fichier [Réservé aux membres club]
resource.h637 octets Voir ce fichier [Réservé aux membres club]Télécharger ce fichier [Réservé aux membres club]
StopThread.aps33 300 octets  Télécharger ce fichier [Réservé aux membres club]
StopThread.cpp1 703 octets Voir ce fichier [Réservé aux membres club]Télécharger ce fichier [Réservé aux membres club]
StopThread.ncb44 032 octets  Télécharger ce fichier [Réservé aux membres club]
StopThread.rc2 647 octets Voir ce fichier [Réservé aux membres club]Télécharger ce fichier [Réservé aux membres club]
StopThread.sln920 octets Voir ce fichier [Réservé aux membres club]Télécharger ce fichier [Réservé aux membres club]
StopThread.suo8 192 octets  Télécharger ce fichier [Réservé aux membres club]
StopThread.vcproj3 099 octets  Télécharger ce fichier [Réservé aux membres club]
TéléchargerTélécharger le ZIP

 Sources qui peuvent être en rapport avec celle-ci

 Historique des mises à jour

DateDescription
25/10/2005 15:11:54Se trouve aussi ici: http://www.dev.winsysdev.com/

 Les commentaires

Commentaire de : LordBob le 24/02/2004 18:30:56Envoyer un message à LordBob
tu aurrais peut etre pu un peu plus expliquer ta source pour que les debutant, comprenne un peu mieux !!! car moi si je ne savait pas comment créer un thread, bah j'aurrais galéré pour bien comprendre ta source !!!
Commentaire de : Arnotic le 24/02/2004 19:57:45Envoyer un message à Arnotic
Il me semblait que la source etait suffisamente petite pour arriver à s'y retourver.

Je prends note.
Commentaire de : vecchio56 le 13/05/2004 12:58:28Envoyer un message à vecchio56
Le problème avec ton truc c'est que ce n'est pas satisfaisant pour un thread qui devrait aller vite, puisque l'appel à WaitForSingleObject prend pas mal de temps. Pourquoi ne pas utiliser un simple booléen qui dit s'il faut arrêter?
Commentaire de : AlexMAN le 18/07/2004 13:18:30Envoyer un message à AlexMAN
Un booleen est TOTALEMENT deconseillé ds l'utilisation de thread : utilisation du CPU de minimum 99% avec cette methode...
Commentaire de : vecchio56 le 18/07/2004 13:22:19Envoyer un message à vecchio56
Bah non, le while(b)  sera plus rapide que le while( WaitForSingleObject( d_eventStop, D_TIME_OUT_TEST ) == WAIT_TIMEOUT ); qui va beaucoup ralentir le thread
Commentaire de : AlexMAN le 18/07/2004 13:28:52Envoyer un message à AlexMAN
en terme de rapidité je pense pareil ke toi, mais cela n'empeche pas ke le cpu sera ocupé a 99% par ton thread, et c vraiment un truc a eviter..
Commentaire de : vecchio56 le 18/07/2004 13:35:00Envoyer un message à vecchio56
Non j'ai fait un programme qui faisait de gros calculs, que je devais arrêter quand je voulais, eh bien la solution avec un booléen était bien meilleure (d'autant meilleure qu'on vérifie souvent s'il faut arrêter le thread - il est évident que regarder si un booleen est tru ou false va plus vite qu'appeler une fonction qui va regarder en plus des HANDLE).
Tu n'a qu'a essayer sur cet exemple, le cpu n'est pas du tout occupé, de ce coté la ca ne change structement rien.
D'ailleurs je ne voie pas pourquoi ca utiliserait plus de cpu??
Commentaire de : vecchio56 le 18/07/2004 13:35:36Envoyer un message à vecchio56
Voila: tu n'a qu'a essayer par toi même

#include <windows.h>
#include <process.h>
#include <stdlib.h>

#include "resource.h"

#define D_TIME_OUT_TEST 1L

HWND hstatus;

BOOL b;
DWORD Thread_TestID;

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

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

do
{
if (inc == 99)
b = FALSE;
SetWindowText(hstatus, itoa(++inc, szbuff, 10));
Sleep(100L);
} 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:
SetClassLongPtr(hdlg, GCL_HICON, (LONG)(LONG_PTR)LoadIcon(0, IDI_APPLICATION));
hstatus = GetDlgItem(hdlg, IDC_STATUS);
return 1;
case WM_COMMAND:
switch(wParam)
{
case IDC_START:
b = TRUE;
CreateThread(NULL, 0, &Thread_Test, NULL, NULL, &Thread_TestID);
return 0;
case IDC_STOP:
b = FALSE;
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;
}
Commentaire de : AlexMAN le 18/07/2004 13:43:16Envoyer un message à AlexMAN
vecchio56 > ya un sleep(100) ds ta boucle, c normal ke ca pompe pas le cpu comme un malade...enleve le, teste sur un grand nombre, et regarde l'activité de ton cpu...
Commentaire de : vecchio56 le 18/07/2004 13:47:50Envoyer un message à vecchio56
Bah oui mais quand on a un processus qui doit utiliser beaucoup de mémoire, il faut bien le faire. Essaie de calculer 100000! avec maple et tu verra que ta cpu est à 100%
Commentaire de : vecchio56 le 18/07/2004 13:50:11Envoyer un message à vecchio56
Enfin mets D_TIME_OUT_TEST à 0 et il va aussi te bouffer toute ta cpu
Commentaire de : Arnotic le 19/07/2004 08:24:03Envoyer un message à Arnotic
En fait si le Thread ne vient pas prendre 100% du CPU c'est juste grace au Sleep(). le mieux mettre en Sleep(10L); quand très très peu de traitement dans le thread.

Après on peut justement ne pas mettre de Sleep() pour une aplication en plein ecran pendant qu'elle traite des données pour allez plus vite.
Commentaire de : AlexMAN le 19/07/2004 12:11:31Envoyer un message à AlexMAN
Arnotic > personnelement, j'ai enormement de pb avec les threads, jme suis tapé Petzold mais j'ai pas plus compris (serai je un cas desespéré ?!), donc jvoulais te demander ds la limite de ton temps disponible (?!), si tu pouvais pas nous faire une ptite applic Multi-Thread avec un peu plus de threads kici (avec event, mutex, section critique...)...Voila c seulement si tu as du temps, sinon c po grav, jV aller me taper Richter...merci

++

ALhexman
Commentaire de : Arnotic le 19/07/2004 12:17:13Envoyer un message à Arnotic
Je verra pour faire un exemple d'appli comme ca alors. Sinon qu'est-ce que tu ne comprends pas exactement ?
Commentaire de : AlexMAN le 19/07/2004 12:24:13Envoyer un message à AlexMAN
ben en fait, je ne comprends pas ou placer WaitForSingleObject dans la threadProc. Comment gerer plusieurs threads est vraiment un mystere ! Kan faire (pour les event) un SetEvent, ou un ResetEvent pour permettre aux autres threads de s'executer, enfin je gere pas du tt kan le nbre de threads (sans compter le thread principal) depasse 1.
Commentaire de : NitRic le 07/09/2004 21:54:44Envoyer un message à NitRic

DWORD dwRet = WaitForSingleObject( hnd, INFINITE );

switch ( dwRet ) {

case WAIT_TIMEOUT:
...
break;

case WAIT_FAILED:
...
break;

case WAIT_OBJECT_0:
...
break;

case _WAIT_ABANDONNED:
/* mutex only */
break;

}

Pas besoin de boucle, WaitForSingleObject()/WaitForMultipleObjects() sont parfait pour ce type de `boulot` ...

un while(var); est `strictement` déconseillé. Peu importe le type de projet. Il y à les sections critiques, mutex, event, semaphore, ... pour la synchronisation ...


Petit tutorial parfait à propos du multithreadnig(pour les interessés);
http://bob.developpez.com/tutapiwin/article_46.php




~(.:: NitRic ::.)~

Commentaire de : ncoder le 03/09/2005 10:54:04Envoyer un message à ncoder
Non la source est assez courte pour la comprendre sans avoir besoin de beaucoup de commentaires !

Merci pour ta source, elle est très bien faite (pour commencer!) ;)
Commentaire de : Inekman le 11/11/2005 08:55:11Envoyer un message à Inekman
Je m'aide de ton code pour implémenter un arrêt d'un thread dans un de mes programmes fait en Delphi, cependant je ne parviens pas à définir la contante D_TIME_OUT_TEST à 1L, quelle est cette valeur ?

Merci.
Commentaire de : BruNews le 11/11/2005 09:16:35Envoyer un message à BruNews
1L ou 1 c'est idem.

Pour ajouter un commentaire, vous devez vous identifier :
Si vous n'avez pas encore de compte sur un des sites CodeS-SourceS cliquez ici pour créer votre compte.

Authentification


Nom d'utilisateur :
Mot de passe :

Mot de passe oublié ? / Activation de compte
Créer un compte


Pub

 
Nos partenaires et amis ;-)
TechHeadBrothers.com Feed247,com Toute l'actu Internet 24h/24 7J/7 Search-Sources ASP-PHP.NET DOTNET-PROJECT.COM ASP MAGAZINE C2i.fr DOTNET-FR.ORG

Dev réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND, Tkfe, Sebmafate, Aurélien, Neodante, Coq, Proviste, CrazyHt
Design réalisé par Graph-Comception & N.SOREL (Nix)
Logos & Mascotte réalisée par N.SOREL (Nix) & KDO-Comception
CPPFrance.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
Temps d'éxécution de la page : 3,421875sec
CodeS-SourceS.com© est une marque déposée tous droits réservés
Hébergement de Serveur dédié - Téléphonie VOIP - Comparer les prix