channels
jak zatrzymać goroutine
Mam goroutine, który wywołuje metodę i przekazuje zwracaną wartość na kanale:
ch := make(chan int, 100)
go func(){
for {
ch <- do_stuff()
}
}()
Jak powstrzymać takiego goroutina?
Dlaczego używanie niebuforowanego kanału w tym samym goroutine daje impas
Jestem pewien, że istnieje proste wyjaśnienie tej banalnej sytuacji, ale jestem nowy w modelu współbieżności.
Kiedy uruchami ... ln(<-c)
}
Znowu, dlaczego ?
Proszę, potrzebuję głębokiego wyjaśnienia, nie tylko jak wyeliminować impas i naprawić kod.
Jak wykryć, czy użytkownik opuścił kanał Phoenix z powodu rozłączenia sieci?
Mam aplikację Elixir / Phoenix server, a klienci łączą się przez system build in channels za pomocą websockets. Teraz chcę wy ... ocket, ale to nie wyszło.
Aktualizacja:
Z nowym niesamowitym Phoenix 1.2 Presence rzeczy, to nie powinno być już potrzebne.
Są kanałami przekazywanymi przez odniesienie
The Go tour ma taki przykład dla kanałów: https://tour.golang.org/concurrency/2
package main
import "fmt"
func sum(a [] ... e przez referencjÄ™, ale nie zostaĹ ' stworzony wskaĺşnik do C. Czy kanały są domyślnie przekazywane przez odniesienie w go ?