goroutine

У меня есть CSV-файл с ~10k URL-адресами, которые мне нужны для HTTP get. Каков самый простой способ ограничить параллелизм подпрограмм Go не более чем 16 одновременно? func getUrl(url string) { request := gorequest.New() resp, body, errs := request.Get(each[1]).End() _ = resp _ = body _...

Я пытаюсь использовать goroutine для записи элемента в базу данных. Однако горутин, похоже, по какой-то причине ничего не делает. У меня есть следующие функции: func addEvent(w http.ResponseWriter, r *http.Request) { body, err := ioutil.ReadAll(r.Body) fmt.Println(string(body[:])) if err != ni...

Я пытаюсь реализовать некоторое нетипичное поведение в интерфейсе командной строки, написанном в go. У меня есть функция, которая работает в течение длительного времени, и я хочу иметь функцию очистки, которая работает, когда кто-то ctrl-c выходит из этой функции. Вот макет кода: func longRunningFunction...

Я хочу, чтобы мой GO routine worker (ProcessToDo() в приведенном ниже коде) ждал, пока все "поставленные в очередь" работы будут обработаны, прежде чем завершать работу. Рабочая подпрограмма имеет канал "делать" (буферизованный), через который в нее посылается работа. И у него есть канал "сделано", чтобы ...

Прошу прощения, если этот вопрос слишком глуп. Я читал здесь подробности горотинов . Согласно этой странице, он говорит Goroutines are multiplexed onto a small number of OS threads, rather than a 1:1 mapping, что все, что я мог придумать с моими ограниченными знаниями, это ограниченное число потоков ОС, поро...

Я пытаюсь запустить несколько goroutines, которые дадут свои результаты каналу. Мне нужен хороший способ закрыть канал после того, как все горотины будут сделаны. Моя первая попытка-закрыть его после того, как все процедуры spawn all go, но я думаю, что каким-то образом канал закрывается до того, как все gor...

У меня есть срез, который содержит работу, которую нужно сделать, и срез, который будет содержать результаты, когда все будет сделано. Ниже приведен набросок моего общего процесса: var results = make([]Result, len(jobs)) wg := sync.WaitGroup{} for i, job := range jobs { wg.Add(1) go func(i int, j jo...

это пример использования sync.WaitGroup исправить? Это дает ожидаемый результат, но я не уверен, о wg.Add(4) и позицию wg.Done(). Имеет ли смысл добавить четыре goroutines сразу с wg.Add()? http://play.golang.org/p/ecvYHiie0P package main import ( "fmt" "sync" "time" ) func dosomething(millise...

У меня есть goroutine, который вызывает метод и передает возвращаемое значение по каналу: ch := make(chan int, 100) go func(){ for { ch <- do_stuff() } }() Как мне остановить такой goroutine?...

TL;TR: пожалуйста, просто перейдите к последней части и скажите мне, как вы решите эту проблему. я начал использовать Golang сегодня утром, исходя из Python. Я хочу вызвать исполняемый файл с закрытым исходным кодом из Go несколько раз, с немного параллелизма, с различными аргументами командной строки. Мой к...