Вопросы по теме '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 просмотров
schedule
28.06.2023
Иди — почему для планирования фоновых рабочих 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 просмотров
schedule
13.10.2022
Утечка памяти 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