diff options
Diffstat (limited to 'debugGochan.go')
| -rw-r--r-- | debugGochan.go | 100 |
1 files changed, 0 insertions, 100 deletions
diff --git a/debugGochan.go b/debugGochan.go deleted file mode 100644 index e21dda8..0000000 --- a/debugGochan.go +++ /dev/null @@ -1,100 +0,0 @@ -// https://www.digitalocean.com/community/tutorials/how-to-run-multiple-functions-concurrently-in-go -// who came up with the idea of making community tutorials. that was a good idea! - -package debugger - -import ( - "fmt" - "sync" - - "go.wit.com/log" - "go.wit.com/gui/gui" -) - -var debugWG *sync.WaitGroup -var debugNumberChan chan int - -func DebugGoChannels(n *gui.Node) { - var w, g *gui.Node - - w = n.NewWindow("Debug GO Channels") - w.Custom = w.StandardClose - - g = w.NewGroup("Channel stuff") - - // var debugWG sync.WaitGroup - g.NewButton("init()", func () { - if (debugNumberChan == nil) { - log.Log(true, "making debugNumberChan channel") - debugNumberChan = make(chan int) - } else { - log.Log(true, "debugNumberChan already made") - } - debugWG = new(sync.WaitGroup) - }) - g.NewButton("go printInt(x) (read x values off the channel)", func () { - debugWG.Add(1) - go printInt(2, "routine1") - debugWG.Add(1) - go printInt(2, "routine2") - }) - g.NewButton("sendNumber(2) (chan <- 2, 4)", func () { - debugWG.Add(1) - debugWG.Add(1) - go sendNumber(2) - go sendNumber(4) - }) - g.NewButton("sendNumber(1) (chan <- 7)", func () { - debugWG.Add(1) - go sendNumber(7) - }) - g.NewButton("send 4 numbers (chan <- int)", func () { - log.Log(true, "generateNumbers(4)") - go generateNumbers(4) - }) - g.NewButton("debugWG.Done()", func () { - log.Log(true, "ran debugWG.Done()") - debugWG.Done() - }) - g.NewButton("close chan", func () { - log.Log(true, "close() on", debugNumberChan) - close(debugNumberChan) - }) - g.NewButton("print", func () { - log.Log(true, "waitgroup counter is ?") - }) -} -func sendNumber(i int) { - log.Log(true, "START debugNumberChan <-", i, " (sending", i, "to channel)") - debugNumberChan <- i - debugWG.Wait() - log.Log(true, "END debugNumberChan sendNumber() done", i) -} - -func generateNumbers(total int) { - fmt.Printf("START generateNumbers()\n") - for idx := 1; idx <= total; idx++ { - log.Log(true, "ran debugNumberChan <= idx where idx =", idx) - fmt.Printf("S generateNumbers() sending %d to channel\n", idx) - debugNumberChan <- idx - // res, err := (<-r)() - fmt.Printf("E generateNumbers() sending %d to channel\n", idx) - } - debugWG.Wait() - fmt.Printf("END generateNumbers()\n") -} - -// i equals the number of times to read values from the channel -func printInt(i int, name string) { - tmp := 1 - log.Log(true, "START printInt", name, "read debugNumberChan()") - for num := range debugNumberChan { - log.Log(true, "printInt()",name, "read", num, "from channel") - debugWG.Done() - if (tmp == i) { - return - } - tmp += 1 - } - fmt.Printf("END printInt()", name, "read debugNumberChan\n") -} |
