Create a gist now

Instantly share code, notes, and snippets.

package main
import (
type LED struct {
state bool
ticker *time.Ticker
func toggle(led *LED) {
led.state = !led.state
func looper(led *LED) {
for range led.ticker.C {
func looper2(led *LED, q chan bool) {
for {
select {
case <-led.ticker.C:
case <-q:
fmt.Println("Exiting the goroutine")
func main() {
fmt.Println("Initial number of GoRoutines: ", runtime.NumGoroutine())
led := &LED{state: true, ticker: time.NewTicker(time.Millisecond * 500)}
q := make(chan bool)
go looper2(led, q)
// go looper(led)
fmt.Println("Number of GoRoutines after a call to looper: ", runtime.NumGoroutine())
time.Sleep(2 * time.Second)
fmt.Println("Number of GoRoutines after stopping the ticker: ", runtime.NumGoroutine())
q <- true
fmt.Println("Number of GoRoutines after sending a message on the quit channel: ", runtime.NumGoroutine())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment