Планирование загрузки с круговым алгоритмом?

Я должен записать круговой алгоритм для планирования загрузки в n конечные точки?

Таким образом, если у меня есть серверы A, B и C

Я хотел удостовериться к циклическому алгоритму через них для каждого запроса, который я получаю. Как я делаю это в C#?

7
задан Nevin Mathai 30 July 2010 в 15:39
поделиться

2 ответа

Для записи, определение циклического перебора:

http: //en.wikipedia. org / wiki / Round-robin_scheduling

Просто используйте очередь. Снимите один сверху, используйте его и положите обратно. Это гарантирует, что последний использованный всегда будет выбран последним.

Queue<Server> q = new Queue<Server>();

//get the next one up
Server s = q.DeQueue();


//Use s;


//put s back for later use.
q.Enqueue(s);

Ссылка на класс очереди:

http://msdn.microsoft.com/en-us/library/7977ey2c.aspx

21
ответ дан 6 December 2019 в 06:02
поделиться

Если доступ к вашим конечным точкам осуществляется через список или массив, вам нужно только увеличивать индекс по кругу:

public class RoundRobinIndex
{
    volatile int index = 0;
    int count;

    public int Next
    {
        get
        {
            if (index == count)
            {
                index = 0;
            } 
            return index++;
        }
    }

    public RoundRobinIndex(int countArg)
    {
        count = countArg;
    }
}
2
ответ дан 6 December 2019 в 06:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: