Commit ed5a5cb6 authored by Campana Manuel's avatar Campana Manuel 💬
Browse files

Lezione Thread con esercizio

parent c4218eba
Loading
Loading
Loading
Loading
+110 −11
Original line number Diff line number Diff line
using System;
using System.Threading;
using System.Collections.Generic; // Necessario se si usano liste, qui solo per chiarezza
using System.Collections.Generic;
using System.Security.Cryptography.X509Certificates;
using System.ComponentModel; // Necessario se si usano liste, qui solo per chiarezza

public class Lezione1
{
    // Metodo che verrà eseguito in parallelo dal thread
    public static void SuonaCampana(string suono)
    /* // Metodo che verrà eseguito in parallelo dal thread
    public static void SuonaCampanaDin()
    {
        // Random è locale per evitare Race Condition sull'oggetto Random stesso
        Random rand = new Random();
        Console.WriteLine($"\n--- INIZIO: Campana '{suono}' ---");
        Console.WriteLine($"\n--- INIZIO: Campana DIN ---\n");

        for (int i = 0; i < 5; i++)
        {
            Console.Write($"{suono} ");
            Console.Write($"DIN ");

            Thread.Sleep(500);
           
        }

        Console.WriteLine($"\n--- FINE: Campana '{suono}' ---");
        Console.WriteLine($"\n--- FINE: Campana DIN ---");
    }
    public static void SuonaCampanaDon()
    {
        // Random è locale per evitare Race Condition sull'oggetto Random stesso
        Random rand = new Random();
        Console.WriteLine($"\n--- INIZIO: Campana DON ---\n");

    public static void Main(string[] args)
        for (int i = 0; i < 5; i++)
        {
            Console.Write($"DON ");

            Thread.Sleep(500);

        }

        Console.WriteLine($"\n--- FINE: Campana DON ---");
    }
    
    public static void SuonaCampanaDan()
    {
        // Random è locale per evitare Race Condition sull'oggetto Random stesso
        Random rand = new Random();
        Console.WriteLine($"\n--- INIZIO: Campana DAN ---\n");

        for (int i = 0; i < 5; i++)
        {
            Console.Write($"DAN ");

            Thread.Sleep(500);

        }

        Console.WriteLine($"\n--- FINE: Campana DAN ---");
    }


    public static void Main(string[] args)
    {
        // Creazione di 3 thread
        Thread t_din = new Thread(SuonaCampanaDin);
        Thread t_don = new Thread(SuonaCampanaDon);
        Thread t_dan = new Thread(SuonaCampanaDan);


        Console.WriteLine("Avvio delle campane in parallelo...");

        // Avvio dei thread
        t_din.Start();
        t_dan.Start();
        t_don.Start();

        // Per assicurarsi che il main aspetti la fine dei thread
        t_din.Join();
        t_dan.Join();
        t_don.Join();




        Console.WriteLine("\n\n--- Tutti i thread sono terminati. Programma chiuso. ---");
    */
    public static void Main(string[] args)
    {
        Thread t_fattoriale = new Thread(Fattoriale);
        Thread t_somma = new Thread(CalcoloSomma);
        Thread t_conversione = new Thread(Conversione);

        Console.WriteLine("Avvio i Thread...");
        t_fattoriale.Start();
        t_somma.Start();
        t_conversione.Start();



    }
    public static void Fattoriale()
    {
        Console.WriteLine("\n\nCalcolo del fattoriale di 10...");
        int fattoriale = 10;
        for (int i = 10 - 1; i > 1; i--)
        {
            fattoriale *= i;
        }
        Console.WriteLine($"Il fattoriale di 10 è {fattoriale} ");
    }

    public static void CalcoloSomma()
    {
        Thread.Sleep(50);
        Console.WriteLine("\n\nCalcolo della somma da 0 a 10000...");
        int somma = 0;
        for (int i = 0; i <= 10000; i++)
        {
            somma += i;
        }
        Console.WriteLine($"La somma da 0 a 10000 è {somma} ");
    }

    public static void Conversione()
    {
        Thread.Sleep(100);
        int numero = 10000;
        Thread.Sleep(100); 
        Console.WriteLine($"\n\nConversione del numero {numero} in binario...");
        string risultato = Convert.ToString(numero, 2);
        Console.WriteLine($"La conversione del numero {numero} è: {risultato} ");
    }
}