thboot est le handle de mon threads et j'ai mis tt le reste a null, pour les essais...
Mais, quand je compile avec VC++6 il me dis :
error C2664: 'CreateThread' : cannot convert parameter 3 from 'void (void)' to 'unsigned long (__stdcall *)(void *)'
This conversion requires a reinterpret_cast, a C-style cast or function-style cast
Voila, je ne sais pas coment je dois ecrire l'argument 3 de la fonctions... donc, svp aider moi
cs_Juke
Messages postés42Date d'inscriptionmardi 15 octobre 2002StatutMembreDernière intervention23 janvier 2003 30 oct. 2002 à 08:23
Peut tu m'exxpliquer ce que c'est qu'un thread ?
j'aimerais à l'interieur d'un programme sous dos afficher l'heure en permanence independamment du reste du programme. dois je utiliser un thread ? ou alors comment faire ? est ce ansi ?
cs_llo
Messages postés45Date d'inscriptionjeudi 10 octobre 2002StatutMembreDernière intervention 6 décembre 2002 30 oct. 2002 à 12:39
salut,
chaque programme est composé de 1 ou plusieurs threads. En fait, chacun va avoir sa propre vie même si des objets permettent de les synchroniser ou de partager des ressources.
l'lo
cs_NiChaN
Messages postés27Date d'inscriptionsamedi 20 avril 2002StatutMembreDernière intervention29 décembre 2008 31 oct. 2002 à 00:29
********The EaTo By NiChaN*********
Si C pour un test tu peut eventuelement essayer seulement :
thboot = CreateThread(NULL, 0, 0)
ou bien utiliser les classes du Winthread
exemples :
///////////////////////////////////////////
UINT fonctionRunA(LPVOID pParam);
pThreadB=AfxBeginThread(fonctionRunB,NULL,THREAD_PRIORITY_NORMAL,0,0,NULL);
/////////////////////////////////////////
Ca marche aussi bien !
***********The EaTo By NiChaN *********
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_llo
Messages postés45Date d'inscriptionjeudi 10 octobre 2002StatutMembreDernière intervention 6 décembre 2002 4 nov. 2002 à 14:45
salut,
apparemment mon message ne s'est pas enregistré.... bon je recommence!
voilà pour créer un thread (cf un autre message auquel j'ai répondu)
#include
...
typedef unsigned (__stdcall *PTHREAD_START) (void *);
...
DWORD WINAPI ProcThread (LPVOID lpThreadParameter)
{
... // pour info lpvThreadParm ==> lpThreadParameter
}
...
DWORD dwThreadID;
HANDLE hThread = ((HANDLE)_beginthreadex(
(void *) (lpsa),
(unsigned) (cbStack),
(PTHREAD_START) (ProcThread),
(void *) (lpvThreadParm),
(unsigned) (fdwCreate),
(unsigned *) (&dwThreadID)))
Dans le thread principal, à la fermeture de l'application, on destroy, tu peux provoquer la fermeture du thread créé et attendre sa réelle fermeture pour supprimer le handle avec : ==>
WaitForMultipleObjects(2, g_hThread, TRUE, INFINITE); // pour un seul thread ==> WaitForSingleObject
CloseHandle(g_hThread[0]);
Pour mettre en veille un thread :
SuspendThread(g_hThread[0]);
Pour le remettre en route :
ResumeThread(g_hThread[0]);
Pour la synchronisation des 2 applis, tu peux utiliser une section critique :
CRITICAL_SECTION g_CriticalSection;
// initialisation
InitializeCriticalSection(&g_CriticalSection);
// destruction
DeleteCriticalSection(&g_CriticalSection);
// utilisation dans chaque thread
EnterCriticalSection(&g_CriticalSection); // si l'autre thread y accède alors ce thread se met en attente d'avoir la ressource
-- faire ce qui doit l'être ==> affichage???
LeaveCriticalSection(&g_CriticalSection); // libération de la section
Pour la partie dos (mode consol???), à priori comme ce n'est pas du graphique ca devrait être pareil...
l'lo