У меня есть несколько потоков, которые нужно записать в очередь Azure. Чтобы увеличить пропускную способность, я создал 8 различных очередей Azure. В результате у меня есть 8 различных строк соединения, хранящихся в статическом массиве []. Я бы хотел написать код, который отлично загружает балансы, записывающие эти очереди, всегда возвращая индекс следующей очереди для записи в (и строку подключения для использования), так что очередь 0 записывается в то же количество раз, что и очередь 1, очередь 2 и т. Д. - все последовательно. Мне нужен способ итерации через индексы от 0 до 7, таким образом, чтобы поточно-безопасный. Есть ли более эффективный и эффективный способ написать приведенный ниже код и как сделать его потокобезопасным? Большое спасибо.Как вы выполняете итерацию по массиву индексов в потокобезопасном, эффективном образом?
private static int currentQueueIndex = -1; // initial value set to -1 so that index 0 is returned first.
private static int maxIndex = 7;
private static int GetNextQueueIndex()
{
int tempIndex = currentQueueIndex + 1;
if (tempIndex > maxIndex)
{
currentQueueIndex = 0;
return 0;
}
else
{
return tempIndex;
}
}
Я не считаю, что это поточно так, как вы есть. определить экземпляр простого объекта, а затем заблокировать этот экземпляр внутри GetNextQueueIndex, чтобы он был потокобезопасным. – LB2
Вы просто увеличиваете int, я бы просто обернул его в 'lock'. – Blorgbeard