Оптимизация увеличения размера стека для максимизации использования специальных сегментов в многопоточных процессахC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Оптимизация увеличения размера стека для максимизации использования специальных сегментов в многопоточных процессах

Сообщение Anonymous »

Как оптимизировать переключение контекста между процессами при следующей настройке?
Существует n сегментов, каждому сегменту назначается поток. Максимальный размер стека потока, назначенного i-му сегменту, обозначается threadSize для всех 1 ≤ i ≤ n.
Для любого высокоприоритетного процесса размеры стека некоторых сегменты необходимо увеличить. Сегмент i называется особенным, если threadSize < threadSize > threadSize[i + 1]. Однако сегменты на каждом конце не могут быть особенными.
Цель состоит в том, чтобы изменить размеры стека таким образом, чтобы максимально увеличить количество специальных сегментов. Вам разрешено выбрать любой сегмент и увеличить размер его стека на x. Более формально:
  • Выберите индекс i и целое число x, где 0 ≤ x ≤ 10^18.
    < /li>
    Увеличить размер стека i-го сегмента с threadSize до threadSize + x.

Как найти минимальное общее увеличение размера стека сегментов для достижения максимального количества специальных сегментов?
long findMinIncrease(vector размер нити) {

Код: Выделить всё

int n = threadSize.size();

long total = 0;

for (int i = n - 2; i >= 1; i--) {

if (threadSize[i] = threadSize[i - 1]) {

int increase = max(threadSize[i + 1], threadSize[i - 1]) - threadSize[i] + 1;

total += increase;

threadSize[i] += increase;

}

}

return total;
Пробывал, но думаю, что это неправильно

Подробнее здесь: https://stackoverflow.com/questions/790 ... ed-process
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»