PDA

View Full Version : [Visual C++] Come abbassare la priorità del main()?


DomusP45
04-02-2014, 09:12
Ciao a tutti.

Ho creato un main che gestisce dei thread, con le direttive HANDLE etc

//dichiarazione delle handle
HANDLE handle0,handle1,handle2,handle3,handle4;

//dichiarazione dei threads
handle0 = (HANDLE) _beginthread(puts,0,&dati0);
handle1 = (HANDLE) _beginthread(grey,0,&dati1);
handle2 = (HANDLE) _beginthread(soa,0,&dati2);
handle3 = (HANDLE) _beginthread(fin,0,&dati3);
handle4 = (HANDLE) _beginthread(ver,0,&dati4);

. . .

//join
WaitForSingleObject(handle0,INFINITE);
WaitForSingleObject(handle1,INFINITE);
WaitForSingleObject(handle2,INFINITE);
WaitForSingleObject(handle3,INFINITE);
WaitForSingleObject(handle4,INFINITE);


A me interesserebbe ad un certo punto del programma, prima dei waitforSingleObject, lanciare una funzione OpenGL che mi disegna della roba. Solo che per evitare casini con i threads (e visto che non mi interessa come thread principale, va bene pure se lavora in background) vorrei abbassare la priorità del main() rispetto ai thread lanciati.

Come si fa questa cosa in Visual C++? Come posso regolare la priorità del main()?

Daniels118
05-02-2014, 15:48
Non so se ci siano delle librerie di VC++ che gestiscono la cosa ad alto livello, ma Windows permette di farlo nativamente con queste due funzioni:
GetCurrentThread e SetThreadPriority.

http://msdn.microsoft.com/en-us/library/windows/desktop/ms683182(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/windows/desktop/ms686277(v=vs.85).aspx

DomusP45
05-02-2014, 16:09
Non so se ci siano delle librerie di VC++ che gestiscono la cosa ad alto livello, ma Windows permette di farlo nativamente con queste due funzioni:
GetCurrentThread e SetThreadPriority.

http://msdn.microsoft.com/en-us/library/windows/desktop/ms683182(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/windows/desktop/ms686277(v=vs.85).aspx

Grazie mille della dritta! Funziona perfettamente. Gentilissimo!!