Я полагаю из вашего примера статического массива, что вам нужен прямоугольный массив, а не зубчатый. Вы можете использовать следующее:
int *ary = new int[sizeX * sizeY];
Затем вы можете получить доступ к элементам как:
ary[y*sizeX + x]
Не забудьте использовать delete [] на ary
.
Я не знаю ни о каком API, чтобы сделать, заставляют планировщик ОС делать то, что Вы хотите (даже если Ваш поток будет неактивным приоритетом, если не будет никакого более высокого приоритета готовые потоки, Ваш будет работать). Однако я думаю, что можно импровизировать довольно изящную функцию регулировки на основе того, что Вы уже делаете. По существу (у меня нет Windows dev машиной удобный):
Выбор количество времени по умолчанию поток будет спать каждое повторение. Затем на каждом повторении (или на каждом энном повторении, таком, что функция регулировки самостоятельно не становится значительной загрузкой ЦП),
В зависимости от того, как Ваш сторожевой таймер вычисляет использование ЦП, Вы могли бы хотеть использовать GetProcessAffinityMask () для обнаружения, сколько центральных процессоров система имеет. dCPU / (dClock * центральные процессоры) является процентом общего доступного процессорного времени.
необходимо будет все еще выбрать некоторые магические числа в течение начального времени сна и инкрементной/декрементной суммы, но я думаю, что этот алгоритм мог быть настроен для поддерживания потока в рабочем состоянии в справедливо близко к решительному проценту ЦП.
На Linux можно изменить приоритет планирования потока с хорошим ().
Проблема, не нормально хотеть оставить ЦП неактивным, в то время как Вы должны проделать работу. Обычно Вы поставили фоновую задачу, чтобы БЕЗДЕЙСТВОВАТЬ приоритет и позволить ОС обработать планирование всего этого процессорное время, которое не используется интерактивными задачами.
Это звучит мне как проблема, сторожевой процесс.
, Если Ваша фоновая задача является зависящей от ЦП тогда, Вы хотите, чтобы она заняла все неиспользованное процессорное время для своей задачи.
, Возможно, необходимо ли посмотреть на фиксацию сторожевой программы?
Я не могу думать ни о каком кросс-платформенном способе того, что Вы хотите (или любой гарантируемый путь точка), но поскольку Вы используете GetTickCount, возможно, Вы не интересуетесь кросс-платформенным:)
я использовал бы межпроцессные взаимодействия и установил бы интенсивные процессы хорошие уровни для получения то, чего Вы требуете, но я не уверен, что это подходит для Вашей ситуации.
РЕДАКТИРОВАНИЕ: Я соглашаюсь с Bernard, который является, почему я думаю, процесс, а не поток мог бы быть более соответствующим, но это просто не могло бы удовлетворить Вашим целям.