Resultados da pesquisa a pedido "goroutine"
ordem de execução das goroutines
Estou tentando entender esse pedaço de código, não sei por que o segundo passo é executado antes do primeiro. Seria ótimo se alguém realmente pudesse me ajudar com isso! func sum(a []int, c chan int) { fmt.Println("summing: ", a) total := 0 for ...
Diferença entre as goroutines principais e as goroutines geradas de um programa Go
Ao criar um servidor usandogRPC, se eu iniciar ogRPC servidor no processo principal, ele pode lidar com até solicitações (milhares) de clientes. No entanto, se eu iniciar o servidor como uma goroutine, ele poderá lidar apenas com alguns pedidos ...
Como podemos usar os canais no Go no lugar do mutex?
Canais combinam comunicação - a troca de um valor - com sincronização - garantindo que dois cálculos (goroutines) estejam em um estado conhecido. Como é possível usar os canais no Google Go para executar a funcionalidade do mutex? package main ...
É seguro ler um ponteiro de função simultaneamente sem um bloqueio?
Suponha que eu tenho isso: go func() { for range time.Tick(1 * time.Millisecond) { a, b = b, a } }()E em outro lugar: i := a // <-- Is this safe?Para esta pergunta, não é importante qual o valor dei é em relação ao originala oub. A única ...
Feche várias goroutines se ocorrer um erro de uma vez
considere esta função: func doAllWork() error { var wg sync.WaitGroup wg.Add(3) for i := 0; i < 2; i++ { go func() { defer wg.Done() for j := 0; j < 10; j++ { result, err := work(j) if err != nil { // can't use `return err` here // what sould I ...
Isso ocorre porque o compilador go otimizou o código?
package main import "time" func main() { i := 1 go func() { for { i++ } }() <-time.After(1 * time.Second) println(i) }A saída é sempre1. No entanto, é absolutamente que 1s é suficiente para ofor loop para passar por muitas e muitas vezes. Eu ...
Resolução de impasse de goroutines
Eu tenho tentado resolver esse problema simples que encontrei na simultaneidade de Golang. Estive pesquisando todas as soluções possíveis, mas não encontrei nada específico para o meu problema (ou talvez eu não tenha uma). Aqui está o meu ...
Posso escrever simultaneamente diferentes elementos de fatia
Eu tenho uma fatia que contém o trabalho a ser feito e uma fatia que conterá os resultados quando tudo estiver pronto. A seguir, um esboço do meu processo geral: var results = make([]Result, len(jobs)) wg := sync.WaitGroup{} for i, job := range ...