Esercizi

Academy

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()