Вы правильно используете цикл, но:
В принципе, ничто в этом цикле не займет слишком много процессорного времени по сравнению со временем, в течение которого он спит или ожидает ввода-вывода.
Чтобы убить процессор, вам нужно дать ему просто CPU. Единственный хитрый момент - убедиться, что компилятор C ++ не оптимизирует цикл. Что-то вроде этого должно быть в порядке:
// A bit like generating a hashcode. Pretty arbitrary choice,
// but simple code which would be hard for the compiler to
// optimise away.
int running_total = 23;
for (int i=0; i < some_large_number; i++)
{
running_total = 37 * running_total + i;
}
return running_total;
Обратите внимание, что я возвращаю значение из цикла. Это должно помешать компилятору C ++ заметить, что цикл бесполезен (если вы нигде не используете значение, цикл не будет иметь смысла). Вы также можете отключить встраивание, так как в противном случае, я думаю, есть вероятность, что умный компилятор заметит, что вы вызываете функцию, не используя возвращаемое значение, и ничего не вставит. (Как указывает Сума в ответе, использование volatile
при вызове функции должно отключить встраивание.)