| Uppgift 8 våren 2014Uppgiften ska lämnas till din övningsledare på övningarna den 4/4. 
 Lämna in uppgiften med rätt försättsblad: 
 För godkänt måste du ha gjort samtliga deluppgifter. Det är tillåtet att göra enstaka fel och misstag men det är viktigt att du försöker lösa samtliga uppgifter. HemuppgiftLäs avnitt 3-5 i Fundamentals of concurrent programming. Skriftlig uppgiftFinn två felFörklara vad som är fel i nedanstående kod och fixa sedan programmen så att all data verkligen passerar genom kanalen och blir utskriven. Lämna in utskrifter av de kompletta programmen. 
// I want this program to print "Hello world!", but it doesn't work.
func main() {
    ch := make(chan string)
    ch <- "Hello world!"
    fmt.Println(<-ch)
}
// This program should go to 11, but sometimes it only prints 1 to 10.
func main() {
    ch := make(chan int)
    go Print(ch)
    for i := 1; i <= 11; i++ {
        ch <- i
    }
    close(ch)
}
// Print prints all numbers sent on the channel.
// The function returns when the channel is closed.
func Print(ch <-chan int) {
    for n := range ch { // reads from channel until it's closed
        fmt.Println(n)
    }
}
Många sändare och många mottagare
Programmet  
 
Ändra koden genom att lägga till en ny  Pythia, oraklet i DelphiFilen oracle.go innehåller ett kodskelett till ett orakelprogram som besvarar frågor. 
 Ditt program ska innehålla två stycken kanaler: en kanal för frågor samt en kanal för svar och förutsägelser. I Oracle-metoden ska du starta tre stycken permanenta gorutiner: 
 Oracle-metoden är den viktigaste delen av uppgiften. Om du vill får du också förbättra svarsalgoritmen. Även här får gärna dela upp algoritmen på flera metoder. Här är några tips: |