Итак, возникла новая проблема ...
Я пишу многопоточный прокси-чекер в c #.
Я использую BackgroundWorkers для решения проблемы многопоточности.
Но у меня проблемы с координацией и назначением прокси, оставшихся в очереди, бегущим работникам. Он работает большую часть времени, но иногда результат не возвращается, поэтому некоторые прокси «теряются» во время процесса.
Этот список представляет очередь и заполняется идентификаторами прокси в ListView.
private List<int> queue = new List<int>();
private int GetNextinQueue()
{
if(queue.Count > 0)
{
lock (lockqueue)
{
int temp = queue[0];
queue.Remove(temp);
return temp;
}
}
else
return -1;
}
Выше приведен мой метод получения следующего прокси-сервера в очереди, я использую оператор блокировки, чтобы предотвратить состояние гонки, но я не уверен, достаточно ли этого или замедляет процесс, потому что заставляет другие потоки ждать ...
(lockqueue - это объект, который используется только для блокировки)
Итак, мой вопрос: как это возможно, что некоторые прокси не проверяются (даже если проверка связи не проходит, проверка должна что-то возвращать, но иногда просто ничего) и как я могу оптимизировать этот код для производительности?
Вот остаток кода, который я считаю важным для этого вопроса http://pastebin.com/iJduX82b
Если чего-то не хватает, просто напишите комментарий
Спасибо:)