Я должен записать круговой алгоритм для планирования загрузки в n конечные точки?
Таким образом, если у меня есть серверы A, B и C
Я хотел удостовериться к циклическому алгоритму через них для каждого запроса, который я получаю. Как я делаю это в C#?
Для записи, определение циклического перебора:
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);
Ссылка на класс очереди:
Если доступ к вашим конечным точкам осуществляется через список или массив, вам нужно только увеличивать индекс по кругу:
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;
}
}