• [^] # Re: Hello World concurrentiel

    Posté par . En réponse à la dépêche De tout, de rien, des bookmarks, du bla‐bla #45. Évalué à 4.

    Une version go un peu simplifiée, sans la dépendance:

    package main
    func main() {
     sayHello := make(chan bool)
     sayWorld := make(chan bool)
     quitter := make(chan string)
     go func() {
     for i := 0; i < 4; i++ {
     print("Hello ")
     sayWorld <- true
     <-sayHello
     }
     sayWorld <- false
     }()
     go func() {
     for reply := range sayWorld { // We can range over chans.
     if reply == false {
     break
     }
     println("World!")
     sayHello <- true
     }
     quitter <- "Done"
     }()
     println(<-quitter)
    }
    
    

    J'aime beaucoup ce langage que je trouve très facile à lire. Avec ce code, je comprend très vite que la seule chose que j'ai à comprendre, c'est le cheminement des signaux, et l'ordre des print. Sur cet exemple, c'est très facile, mais il n'y a rien qui dépasse, on peut difficilement faire plus minimaliste, ce qui fait que le code utile qui sera ajouté ne sera pas encombré.
    A essayer sur http://play.golang.org/p/QM5xdqKr2f