алгоритм — Распределение работы — Roundrobin в переполнении стека

Постановка задачи в виде цифр
Конфигурация данных

Ожидаемые результаты при условии, что пороговое значение = 9
введите описание изображения здесь

Постановка задачи в виде текста
Есть клиенты T, которые обслуживают сервер X & ниже конфигурация

T0, T1, T2, T3: — X0
Т4, Т5, Т6, Т7: — Х1
Т8, Т9, Т10, Т11: — Х2
Т12, Т13, Т14, Т15: — Х3

T0 до T3 Служит в циклическом режиме до X0, пока не будет подан порог токенов.
Скажем, например: порог 9, последовательность подачи будет выглядеть
Т0, Т1, Т2, Т3, Т0, Т1, Т2, Т3,T0

T4 до T7 Служит в циклическом режиме до X1, пока не будет подан порог токенов.
Скажем, например: порог 9, последовательность подачи будет выглядеть
T4, T5, T6, T7, T4, T5, T6, T7,T4

T8 до T11 Служит в циклическом режиме до X2, пока не будет подан порог токенов.
Скажем, например: порог 9, последовательность подачи будет выглядеть
T8, T9, T10, T11, T8, T9, T10, T11,T8

T12 до T15 Служит в циклическом режиме до X3, пока не будет подан порог токенов.
Скажем, например: порог 9, последовательность подачи будет выглядеть
T12, T13, T14, T15, T12, T13, T14, T15,T12

ТАК ПОСЛЕДОВАТЕЛЬНОСТЬ ПОСМОТРЕТ, КАК ЭТО

Т0, Т1, Т2, Т3, Т0, Т1, Т2, Т3,T0 : — X0
T4, T5, T6, T7, T4, T5, T6, T7,T4 : — X1
T8, T9, T10, T11, T8, T9, T10, T11,T8 : — X2
T12, T13, T14, T15, T12, T13, T14, T15,T12 : — X3

ПОСЛЕ ТОГО, КАК ВСЕ СЛЕДУЮЩАЯ СЛЕДУЮЩАЯ ПОСЛЕДОВАТЕЛЬНОСТЬ, СМОТРЕТ

Т1, Т2, Т3, Т0, Т1, Т2, Т3, Т0,T1 : — X0
T5, T6, T7, T4, T5, T6, T7, T4,T5 : — X1
T9, T10, T11, T8, T9, T10, T11, T8,T9 : — X2
T13, T14, T15, T12, T13, T14, T15, T12,T13 X3

как видите, последний использованный T ‘пропускается в следующей итерации.

Мне удалось написать фрагмент кода, код здесь, но в моем коде я не могу справедливо распределить токены, как ожидалось в таблице (где последний использованный T ‘после достижения порога должен быть пропущен в следующей итерации).

Пожалуйста, предложите.

#include <iostream>

int CurrentT = 0;
int No_Of_T_Per_X = 4;
int OutputX = 0;
int No_Of_X = 4;
int Valid_T[16] ={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
int Processed_Tokens[4] = {0,0,0,0};
int THRESHOLD[4] = {9,9,9,9};
int LastT_Used[4] = {0,0,0,0};

static unsigned int getTargetX(unsigned int id, unsigned int       num_T_per_X)
{ return id / num_T_per_X; }

bool batch = false;
int main()
{
int prev_SPMindex = -1;
int next_SPMindex = 0;

for(int i=1;i<=1000;i++) { // Looping to test some random no. of tokens..
if ( Processed_Tokens[OutputX] >= THRESHOLD[OutputX]){
THRESHOLD[OutputX] = THRESHOLD[OutputX] + 9;
//LastT_Used[OutputX] = CurrentT;
prev_SPMindex = next_SPMindex;
CurrentT = prev_SPMindex;
}

CurrentT = (CurrentT + 1) % (sizeof(Valid_T)/sizeof(int));  // Currently Processed T'

if(((CurrentT % No_Of_T_Per_X) == 0)){
next_SPMindex = CurrentT -1;
CurrentT = prev_SPMindex;
CurrentT = (CurrentT + 1) % (sizeof(Valid_T)/sizeof(int));
}

OutputX =    getTargetX(Valid_T[CurrentT], No_Of_T_Per_X); // Currently Processed X'
Processed_Tokens[OutputX] += 1; // Increasing the Count of Tokens to test

}

return 0;

}

1

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]