Re: SetThreadIdealProcessor()?
On Sun, 13 Jun 2010 23:01:19 +0100, Stephen Wolstenholme
<steve@tropheus.demon.co.uk> wrote:
|On 13 Jun 2010 12:43:54 -0400, Vincent Fatica
|<vince@blackholespam.net> wrote:
|
|>of SetThreadIdealProcessor(), the docs say:
|>
|>>dwIdealProcessor [in]
|>
|>>The number of the preferred processor for the thread. This value is zero-based. If this parameter is MAXIMUM_PROCESSORS, the function returns the current ideal processor without changing it.
|>
|>>Return Value
|>
|>>If the function succeeds, the return value is the previous preferred processor.
|>
|>But this code (VC9, XPSP3) gives the results below it:
|>
|>>for ( INT i=0; i<10; i++ )
|>> wprintf(L"%u ", SetThreadIdealProcessor(GetCurrentThread(), MAXIMUM_PROCESSORS));
|>
|>1 0 3 2 1 0 3 2 1 0 [yes, they cycle]
|>
|>What's up with that?
|
|It suggests you are starting multiple threads on a four processor
|machine.
|
|I start eight threads on a two processor machine and get returns 0 1 0
|1 0 1 0 1.
It's a 4-processor machine, but I'm not starting any threads.
#include <windows.h>
#include <stdio.h>
INT wmain ( INT argc, WCHAR **argv )
{
for ( INT i=0; i<10; i++ )
wprintf(L"%u ", SetThreadIdealProcessor(GetCurrentThread(),
MAXIMUM_PROCESSORS));
return 0;
}
g:\projects\test\release> test.exe
0 3 2 1 0 3 2 1 0 3
--
- Vince