Вопросы по теме 'goroutine'

Проблема с печатью параллельных процедур в Go
У меня есть три одновременных подпрограммы, как это, func Routine1() { Print (value a, value b, value c) Print (value a, value b, value c) Print (value a, value b, value c) } func Routine2() { Print (value e, value f, value g) Print (value e,...
578 просмотров
schedule 16.08.2023

Синхронизированные каналы?
Предположим, я анализирую какой-то ввод с помощью следующих трех методов: func parseHeader ([]byte) []byte func parseBody ([]byte) []byte func parseFooter ([]byte) []byte Все они анализируют определенную часть одного и того же ввода и...
192 просмотров
schedule 27.09.2023

Почему горутины с сетевым вводом-выводом блокируются?
Я использую go 1.1 devel на Ubuntu 13.04. go version devel +ebe8bca920ad Wed May 15 15:34:47 2013 +1000 linux/386 Согласно http://golang.org/doc/faq#goroutines Когда сопрограмма блокируется, например, при вызове блокирующего...
1128 просмотров
schedule 05.07.2022

Является ли горутина Go сопрограммой?
В презентации Google I/O 2012 – Шаблоны параллелизма в Go , Роб Пайк упоминает, что несколько горутин могут находиться в одном потоке. Означает ли это, что они реализованы как сопрограммы ? Если нет, то как они реализуются? Ссылки на...
33439 просмотров
schedule 20.03.2023

Параллелизм голанга: как добавить к одному и тому же срезу из разных горутин
У меня есть параллельные горутины, которые хотят добавить структуру (указатель на) к одному и тому же фрагменту. Как написать это на Go, чтобы сделать его безопасным для параллелизма? Это был бы мой небезопасный для параллелизма код, использующий...
43259 просмотров
schedule 15.05.2023

анонимная структура и пустая структура
http://play.golang.org/p/vhaKi5uVmm package main import "fmt" var battle = make(chan string) func warrior(name string, done chan struct{}) { select { case opponent := <-battle: fmt.Printf("%s beat %s\n", name, opponent)...
31877 просмотров
schedule 19.10.2023

Голанг: модель параллелизма производителя / потребителя, но с сериализованными результатами
func main() { jobs := []Job{job1, job2, job3} numOfJobs := len(jobs) resultsChan := make(chan *Result, numOfJobs) jobChan := make(chan *job, numOfJobs) go consume(numOfJobs, jobChan, resultsChan) for i := 0; i < numOfJobs;...
1105 просмотров
schedule 30.11.2022

golang http тайм-аут и накопление горутин
Я использую горутины для достижения http.Get timeout, а затем я обнаружил, что число горутин неуклонно растет, и когда оно достигнет 1000 или около того, программа выйдет Код: package main import ( "errors" "io/ioutil"...
3093 просмотров
schedule 29.03.2022

Когда использовать неблокирующий ›! / потоки и блокировка ›!! /горутины с clojure core.async
Я пишу процесс ETL для чтения данных уровня событий из базы данных продукта, преобразования/объединения их и записи в хранилище данных аналитики. Я использую библиотеку clojure core.async, чтобы разделить эти процессы на параллельно выполняющиеся...
2988 просмотров

Иди — почему для планирования фоновых рабочих goroutine также требуется собственная goroutine?
Я работаю над подбором нескольких шаблонов параллелизма Go. Я посмотрел на реализацию фоновых рабочих с использованием горутин и каналов ввода/вывода и заметил, что когда я отправляю новые задания на принимающий канал (по сути, ставлю новые задания в...
644 просмотров
schedule 13.01.2023

Голанг, состояние гонки с местной картой
Кажется, я не совсем понимаю карты в Go. У меня есть этот код: fetch := map[string]int{some data} for condition { fetchlocal := map[string]int{} for key, value := range fetch { if condition { fetchlocal[key] =...
1492 просмотров
schedule 04.03.2024

Каналы тупик
Я строю асинхронное B-дерево в Go с каналами, но получаю ошибку fatal error: all goroutines are asleep - deadlock! Не знаю почему, потому что я получаю значения из канала в цикле for с буферизованным каналом. type Obj interface {...
77 просмотров
schedule 20.04.2023

Доступ к каналу из другой горутины
В настоящее время у меня есть следующий код: package main import ( "fmt" "math/rand" "time" ) var channel = make(chan []float32, 1) func main() { aMap := initMap() for key := range aMap { fmt.Print("the iteration...
464 просмотров
schedule 19.09.2022

Горутина, вызванная в методе, определенном в пакете, не запускается
Мне просто интересно, что если горутина, вызванная в методе, определенном в пакете, может не запуститься. Вот структура моей примерной программы: sample ├── abc │   └── abc.go └── main.go А ниже приведен исходный код abc.go и main.go....
158 просмотров
schedule 27.06.2023

Как написать лучший выбор из двух каналов
В следующем коде есть два канала A и B, которые содержат работу, в реальном коде это разные структуры, работники должны осушить оба канала перед выходом. Рабочим нужна информация, поступающая по обоим каналам. Два оператора select работают, но очень...
103 просмотров
schedule 16.11.2022

подсчитывать/отображать количество активных горутин
У меня есть очередь и функция, которая выполняет как удаление из очереди, так и постановку в очередь. Я хочу убедиться, что в очереди работает нужное количество горутин, если в списке есть что-то. Это код, который я использую, но мне было...
24268 просмотров
schedule 06.06.2022

Тестирование горутины, которую мой код не ждет
У меня есть функция, которая выполняется одновременно. Его задача — запустить метод командной строки, зарегистрировав ошибку, если она есть. Мой основной поток выполнения не ждет завершения этого метода. Он просто возвращается оптимистично. Как...
596 просмотров

Утечка памяти Golang в отношении горутин
У меня есть программа Go, которая работает непрерывно и полностью полагается на горутины + 1 поток manager . Основной поток просто вызывает горутины и в противном случае спит. Есть утечка памяти. Программа использует все больше и больше памяти,...
3092 просмотров
schedule 20.05.2022

Тупик в программе Houseie. Модель производитель-потребитель
Я пытаюсь реализовать домашнюю игру, в которой горутина производит числа, 3 других горутины проверяют, есть ли они в их токенах, и сообщают производителю, были ли произведены все их числа. Я реализовал это в golang следующим образом. Это приводит к...
77 просмотров
schedule 20.10.2022

sync.WaitGroup ведет себя не так, как я ожидаю, что мне здесь не хватает?
Учитывая следующее: package main import ( "fmt" "sync" ) func main() { n := 100 var wg sync.WaitGroup wg.Add(n) x := 0 for i := 0; i < n; i++ { go func() { defer wg.Done() x++...
138 просмотров
schedule 28.09.2022