Я использую веб-сканер, и у меня есть функция Parse
, которая принимает ссылку в качестве входной информации и должна возвращать все ссылки, содержащиеся на странице.
Я хотел бы максимально использовать рутинные процедуры, чтобы сделать это как можно быстрее. Для этого я хочу создать пул работников.
Я установил канал строк, представляющих ссылки links := make(chan string)
, и передал его в качестве аргумента функции Parse
. Я хочу, чтобы рабочие общались по уникальному каналу. Когда функция запускается, она берет ссылку из links
, анализирует ее и ** для каждой действительной ссылки, найденной на странице, добавляет ссылку в links
.
func Parse(links chan string) {
l := <- links
// If link already parsed, return
for url := newUrlFounds {
links <- url
}
}
Тем не менее, основной проблемой здесь является указание, когда больше не было найдено ссылок. Один из способов, которым я думал об этом, - подождать, пока все рабочие не закончат. Но я не знаю, как это сделать в Go.