DWORD WINAPI MyThreadFunction(LPVOID lpParam) {
volatile auto x = 1;
for (auto i = 0; i < 800000000 / MAX_THREADS; ++i) {
x += i / 3;
}
return 0;
}
Эта функция запускается в потоках MAX_THREADS
.
Я запустил тесты на Intel Core 2 Duo, Windows 7, MS Visual Studio 2012 с помощью Concurrency Visualizer с MAX_THREADS=4
и MAX_THREADS=50
. test1
(4 потока) завершено в 7,1 секунды, но test2
(50 потоков) завершено в 5,8 секунды, тогда как test1
имеет больше контекстных переключателей, чем test2
.
Я провел те же тесты на Intel Core i5, Mac OS 10.7.5 и получил те же результаты.