Utilizzando C++ non gestito su una piattaforma Windows, esiste un modo semplice per rilevare il numero di core del processore della macchina host?Conta processori che usano C++ sotto Windows
risposta
È possibile utilizzare GetLogicalProcessorInformation per ottenere le informazioni necessarie.
ETA:
Come accennato nella domanda un commentatore collegato ad un altro modo (più facile) per farlo sarebbe via GetSystemInfo:
SYSTEM_INFO sysinfo;
GetSystemInfo(&sysinfo);
numCPU = sysinfo.dwNumberOfProcessors;
Sembra come GetLogicalProcessorInformation darebbe informazioni più dettagliate, ma se tutto ciò di cui hai bisogno è il numero di processori, GetSystemInfo probabilmente funzionerebbe perfettamente.
Proprio quello che l'ordine del medico, funziona a meraviglia. Grazie! –
Partenza GetLogicalProcessorInformation
ho notato c'è una variabile di ambiente NUMBER_OF_PROCESSORS
su XP, ma non ho potuto trovare sul sito di Microsoft. Credo che questo sarebbe il modo più semplice, però.
size_t getProcessorCores()
{
DWORD process, system;
if(GetProcessAffinityMask(GetCurrentProcess(), &process, &system))
{
int count = 0;
for(int i = 0; i < 32; i++)
if(system & (1 << i))
count++;
return count;
}
// may be we hav't PROCESS_QUERY_INFORMATION access right
SYSTEM_INFO sysinfo;
GetSystemInfo(&sysinfo);
return sysinfo.dwNumberOfProcessors;
}
size_t getAvailableProcessorCores()
{
DWORD process, system;
if(GetProcessAffinityMask(GetCurrentProcess(), &process, &system))
{
int count = 0;
for(int i = 0; i < 32; i++)
if(process & (1 << i))
count++;
return count;
}
// may be we hav't PROCESS_QUERY_INFORMATION access right
SYSTEM_INFO sysinfo;
GetSystemInfo(&sysinfo);
return sysinfo.dwNumberOfProcessors;
}
- 1. Processori multipli e PerformanceCounter C#
- 2. Che cosa conta come un flop?
- 3. Scrittura di collegamenti Python per codice C++ che usano OpenCV
- 4. Array che usano il comandante
- 5. MPI Numero di processori?
- 6. GetSystemInfo (su Windows) restituisce sempre il numero di processori logici?
- 7. Debug di Android NDK, sotto windows
- 8. fread/ftell apparentemente rotto sotto Windows, funziona bene sotto Linux
- 9. Esecuzione di vi in adb sotto Windows
- 10. Conta gli accessi e le disconnessioni sul computer Windows 7
- 11. Accelerate programma con più processori
- 12. Oggetti associati Objective-C che perdono sotto ARC
- 13. test delle applicazioni python che usano mysql
- 14. In che modo le persone usano Yeoman?
- 15. Mocking Metodi statici che usano Rhino.Mocks
- 16. Qualsiasi VI come editor sotto windows?
- 17. Utilizzo di zlib sotto windows mingw
- 18. CPUID su processori Intel i7
- 19. Quando si usano oggetti funzione in C++?
- 20. I campi const C# usano meno memoria?
- 21. Come si usano numeri casuali in C#?
- 22. Dovrei imparare a implementare OOP in C? Ci sono progetti che usano OOP in C?
- 23. Come posso recuperare il numero di processori su C/Linux?
- 24. Come generare un progetto di Visual Studio che utilizza Intel Compiler utilizzando cmake sotto Windows
- 25. Riferimento collasso sotto C++ 03
- 26. Sezioni critiche con processori multicore
- 27. Dichiarazione sotto interfaccia nell'obiettivo C
- 28. Come rendere R utilizzare tutti i processori?
- 29. Uptime sotto linux in C
- 30. MongoDB conta un valore distinto?
questione connessa: http://stackoverflow.com/questions/150355 – macbirdie
possibile duplicato di [programmazione trovare il numero di core su una macchina] (http://stackoverflow.com/questions/150355/programmatically- find-the-number-of-core-on-a-machine) – sschuberth