Loading banca/Program.cs +47 −2 Original line number Diff line number Diff line namespace banca using System; using System.Threading; namespace banca { internal class Program { static int conto = 500; static object locker = new object(); static void Main(string[] args) { Console.WriteLine("Hello, World!"); int scelta; do { Console.WriteLine("1 = Preleva 500€"); Console.WriteLine("2 = Visualizza conto"); scelta = int.Parse(Console.ReadLine()); } while (scelta < 1 || scelta > 2); if (scelta == 1) { Thread t1 = new Thread(Prelievo); t1.Start(); Thread t2 = new Thread(Prelievo); t2.Start(); } else { Console.WriteLine("Saldo attuale: "+ conto); } } static void Prelievo() { lock (locker) { if (conto >= 500) { conto =conto -500; Console.WriteLine("Prelievo effettuato"); } else { Console.WriteLine("Saldo insufficiente" ); } Console.WriteLine("Saldo attuale: "+conto ); } } } } Loading
banca/Program.cs +47 −2 Original line number Diff line number Diff line namespace banca using System; using System.Threading; namespace banca { internal class Program { static int conto = 500; static object locker = new object(); static void Main(string[] args) { Console.WriteLine("Hello, World!"); int scelta; do { Console.WriteLine("1 = Preleva 500€"); Console.WriteLine("2 = Visualizza conto"); scelta = int.Parse(Console.ReadLine()); } while (scelta < 1 || scelta > 2); if (scelta == 1) { Thread t1 = new Thread(Prelievo); t1.Start(); Thread t2 = new Thread(Prelievo); t2.Start(); } else { Console.WriteLine("Saldo attuale: "+ conto); } } static void Prelievo() { lock (locker) { if (conto >= 500) { conto =conto -500; Console.WriteLine("Prelievo effettuato"); } else { Console.WriteLine("Saldo insufficiente" ); } Console.WriteLine("Saldo attuale: "+conto ); } } } }