User Tools

Site Tools


cs_lang:go

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
cs_lang:go [2012/04/21 09:02] cedriccs_lang:go [2014/04/18 23:19] (current) – [Books] cedric
Line 23: Line 23:
     a := []int{7, 2, 8, -9, 4, 0}     a := []int{7, 2, 8, -9, 4, 0}
  
-        c := make(chan int)+    c := make(chan int)
     go sum(a[:len(a)/2], c)     go sum(a[:len(a)/2], c)
     go sum(a[len(a)/2:], c)     go sum(a[len(a)/2:], c)
-        x, y := <-c, <-c  // receive from c+    x, y := <-c, <-c
  
     fmt.Println(x, y, x + y)     fmt.Println(x, y, x + y)
Line 33: Line 33:
  
  
 +===== Producer-consumer problem =====
 +<code go>
 +package main
 + 
 +import ("fmt")
 + 
 +var done = make(chan bool)
 +var cake = make(chan int)
 + 
 +func produce (firstname string) {
 +    for i := 0; i < 10; i++ {
 +        fmt.Printf("%s make cake %d\n", firstname, i)
 +        cake <- i
 +    }
 +    done <- true
 +}
 + 
 +func consume (firstname string) {
 +    for {
 +      cake_number := <-cake
 +      fmt.Printf("%s eat cake %d\n", firstname, cake_number)
 +   }
 +}
 + 
 +func main () {
 +   go produce("Alice")
 +   go consume("Bob")
 +   go consume("Maxime")
 +   <- done
 +}
 +</code>
  
-====== Books ====== +===== Fork bomb ===== 
-<html+<code go
-<div id="w7807c19744300a8f904b3ca228f92656"></div><script type="text/javascript" charset="UTF-8" src="http://www.librarything.com/widget_get.php?userid=cedricbonhomme&theID=w7807c19744300a8f904b3ca228f92656"></script><noscript><a href="http://www.librarything.com/profile/cedricbonhomme">My Library</a> at <a href="http://www.librarything.com">LibraryThing</a></noscript> +package main
-</html>+
  
 +import "fmt"
 +
 +func main() {
 +    c := make(chan bool)
 +    go func() {
 +        count := 0
 +        for <- c {
 +            count++
 +            fmt.Println(count)
 +        }
 +    }()
 +    bomb(c)
 +}
 +
 +func bomb(tick chan bool) {
 +    for {
 +        tick <- true
 +        go bomb(tick)
 +    }
 +}
 +</code>
 +
 +
 +====== Books ======
 [[https://pinboard.in/u:cedricbonhomme/t:cs_lang:go/ | Various resources]]. [[https://pinboard.in/u:cedricbonhomme/t:cs_lang:go/ | Various resources]].
cs_lang/go.1334991762.txt.gz · Last modified: 2012/04/21 09:02 by cedric