Производитель / потребитель поисковый робот, использующий очередь с неизвестным размером

Мне нужно сканировать родительские веб-страницы и их дочерние веб-страницы, и я следовал концепции производителя / потребителя из http://www.albahari.com/threading/part4.aspx#%5FWait%5Fand%5FPulse . Кроме того, я использовал 5 потоков, которые ставят и удаляют ссылки.

Какие-либо рекомендации о том, как мне завершить / присоединиться ко всем потокам, когда все они закончат обработку очереди, учитывая, что длина очереди неизвестна?

Ниже представлена ​​идея того, как я ее закодировал.

static void Main(string[] args)
{
    //enqueue parent links here
    ...
    //then start crawling via threading
    ...
}

public void Crawl()
{
   //dequeue
   //get child links
   //enqueue child links
}

5
задан Tudor 12 December 2011 в 15:40
поделиться