Salut � tous,
A chaque jour son petit sujet...
Je travail sur la cr�ation de thread afin de faire du "parall�le". Voici le petit thread de chronom�trage que j'ai "cr��" :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 #ifndef chronometreH #define chronometreH //--------------------------------------------------------------------------- #include <Classes.hpp> //--------------------------------------------------------------------------- class ThChrono : public TThread { private: protected: void __fastcall Execute(); void __fastcall AffMessage(); public: __fastcall ThChrono(bool CreateSuspended); LARGE_INTEGER start; //!< The start time of the chronometer LARGE_INTEGER tic; LARGE_INTEGER FQPF; bool HRPCAvail; //!< Is there an available HRPC AnsiString millit; double result; }; //--------------------------------------------------------------------------- #endifJe met cr�� entre guillemet car j'ai �norm�ment pomp� sur le code trouv� dans ce poste
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57 #include <vcl.h> #pragma hdrstop #include "chronometre.h" #include "page_essai.h" #pragma package(smart_init) //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- __fastcall ThChrono::ThChrono(bool CreateSuspended) : TThread(CreateSuspended) { } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- void __fastcall ThChrono::Execute() { HRPCAvail=QueryPerformanceCounter(&start); //memo du temps de start if (!HRPCAvail) //si le compteur n'était pas disponible { start.LowPart = ::GetTickCount(); //basse resolution start.HighPart = 0; } while (!Terminated) { if (HRPCAvail) //si le compteur haute resolution était dispo { QueryPerformanceCounter(&tic); //recup du temps QueryPerformanceFrequency(&FQPF); //recup de la frequence //resultat en msec result=static_cast<double>(tic.QuadPart - start.QuadPart) * 1000 /static_cast<double>(FQPF.QuadPart); } else //si le compteur n'était pas disponible { tic.LowPart = ::GetTickCount(); tic.HighPart = 0; result = 0; //resultat result=tic.LowPart - start.LowPart; } millit = AnsiString(result); Synchronize(AffMessage); } } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- void __fastcall ThChrono::AffMessage() { ecran_essai->Label1->Caption = millit; }
Ma question est de savoir s'il existe un moyen de s'assurer ou de forcer l'utilisation des diff�rents c�urs du PC? Un coeur pour le process principal et un autre pour les threads.
M�me si mon process n'est compos� que de t�ches durant plusieurs centi�me de seconde, que ce chrono est "riche" pour mon utilisation, je pr�f�re assur� le process.
Partager