diff --git a/main.go b/main.go index f4ebb0c..cac47e9 100644 --- a/main.go +++ b/main.go @@ -9,7 +9,8 @@ package main // import "git.sangeeth.dev/gobyexample/cselect" // import "git.sangeeth.dev/gobyexample/timeouts" // import "git.sangeeth.dev/gobyexample/selectdefault" -import "git.sangeeth.dev/gobyexample/closingchannels" +// import "git.sangeeth.dev/gobyexample/closingchannels" +import "git.sangeeth.dev/gobyexample/timers" func main() { // runes.Runes() @@ -21,5 +22,6 @@ func main() { // cselect.Select() // timeouts.Timeouts() // selectdefault.SelectDefault() - closingchannels.ClosingChannels() + // closingchannels.ClosingChannels() + timers.Timers() } diff --git a/timers/timers.go b/timers/timers.go new file mode 100644 index 0000000..55320f0 --- /dev/null +++ b/timers/timers.go @@ -0,0 +1,26 @@ +package timers + +import ( + "fmt" + "time" +) + +func Timers() { + t := time.NewTimer(time.Second) + + go func() { + <-t.C + fmt.Println("Goroutine called after 1 second!") + }() + + cancelled := t.Stop() + + if cancelled { + fmt.Println("Timer cancelled before it got to yield") + } else { + fmt.Println("Failed to cancel timer") + } + + time.Sleep(2 * time.Second) + fmt.Println("Program exiting") +}