Esercizi
Esercizio 401
Generare tre goroutines, one
, two
e three
, ciascuna delle quali conta fino a 100, e ad ogni nuovo numero lo stampa insieme ad un proprio identificatore.
Cosa succede se il main esce subito dopo il lancio delle tre goroutines?
Inserire un temporizzatore di 1 secondo alla fine del main
Inserire un temporizzatore di 1 millisecondo in ciascuna goroutine
Esercizio 402
Una funzione slowcount
conta da 0 al numero massimo fornitole come
parametro. Tra un numero e l’altro attende 1 millisecondo. Al termine ritorna su un channel, fornitole come parametro, l’indicazione che ha finito, e stampa un messaggio a video.
Il main
genera 4 goroutines su tale funzione, ciascuna su un channel diverso, passando loro i numeri massimi 4567, 7687, 1985, 6678. Quindi ascolta per vedere quando hanno finito. Infine segnala la terminazione del lavoro ed esce.
Si possono eliminare i channels?
Estensione: il main
genera 100 goroutines passando loro, come numero massimo, un numero casuale tra 0 e 20000.
Suggerimento: esplorare la funzione Intn() del package math/rand
Esercizio 403
Una goroutine scrive a video ‘Premere INVIO per continuare’. Quindi attende l’input da tastiera. Quando arriva lo segnala al main su un channel.
Il main rimane in ascolto o finchè arriva il segnale dal channel oppure per un timeout di 5 secondi.
Suggerimento: investigare la funzione fmt.Scanln()