文章出处: http://topic.csdn.net/u/20080429/17/689d07f9-1199-4c8f-b7b7-60b24609270f.html
Depends on how the OS schedule threads to CPUs, and how applications set their threads' processor affinity
In windows, the operation system does the allocation for you based on cpu usage. You can set the affinity but, it will not determine which processor you run on. On the XBox 360, the affinity is needed otherwise the 360 will not allocate your thread to a seperate processor at all.
In Mac, threads with default affinity policy will be scheduled freely on any processor. These threads will be preferentially migrated to run on an idle processor. Threads with affinity tags will tend to remain in place.
In Linux, you can force the thread to migrate on the other cpu, by calling *_setaffinity() with different mask.