Is there any way, other than to disable half of the cores using SetThreadAffinityMask(), to make a hyper-threading CPU fully obey thread priorities?
AFAIK, the CPU itself is not aware of priorities, so a low priority thread running on core 1 will be given roughly an equal amount of execution time as a high priority thread running on core 0. In other words, the low priority thread causes the high priority thread to complete its work (potentially much) later.
My assumption here is that core 0 and 1 are two logical CPUs, located on the same physical CPU.
According to comment by Hans, this boils down to if Intel HT CPU supports thread priorities in hardware. Do they?