public static void Main(string[] args) { var clock = new Stopwatch(); var threads = new List <Thread>(); //Recordeu-vos que el fitxer CSV ha d'estar a la carpeta bin/debug de la solució const string fitxer = "CuaClients.csv"; try { var reader = new StreamReader(File.OpenRead(@fitxer)); //Carreguem la llista clients while (!reader.EndOfStream) { var line = reader.ReadLine(); var values = line.Split(';'); var tmp = new Client() { nom = values[0], carretCompra = Int32.Parse(values[1]) }; cua.Enqueue(tmp); } } catch (Exception) { Console.WriteLine("Error accedint a l'arxiu"); Console.ReadKey(); Environment.Exit(0); } clock.Start(); // Instanciar les caixeres i afegir el thread creat a la llista de threads for (var i = 0; i < numCaixeres; i++) { var caixera = new Caixera(i); var thread = new Thread(() => caixera.ProcessarCua()); thread.Start(); threads.Add(thread); } // Procediment per esperar que acabin tots els threads abans d'acabar foreach (Thread thread in threads) { thread.Join(); } // Parem el rellotge i mostrem el temps que triga clock.Stop(); double temps = clock.ElapsedMilliseconds / 1000; Console.Clear(); Console.WriteLine("Temps total Task: " + temps + " segons"); Console.ReadKey(); }
public static void Main(string[] args) { var clock = new Stopwatch(); var tasks = new List <Task>(); var caixeres = 3; //No entenc això, ja tens una constant definint el valor try { using (StreamReader sr = new StreamReader("clients.csv")) { //Llegim la primera línia que conté les capçaleres var header = sr.ReadLine(); while (sr.Peek() != -1) { string line = sr.ReadLine(); var values = line.Split(','); var tmp = new Client() { nom = values[0], carretCompra = Int32.Parse(values[1]) }; cua.Enqueue(tmp); } } } catch (Exception) { Console.WriteLine("Error accedint a l'arxiu"); Console.ReadKey(); Environment.Exit(0); } clock.Start(); for (int i = 1; i <= caixeres; i++) { var caixera = new Caixera() { idCaixera = i }; tasks.Add(Task.Run(() => caixera.ProcessarCua(cua))); } Task.WaitAll(tasks.ToArray()); Console.WriteLine($"** Final Processant cues **"); clock.Stop(); double temps = clock.ElapsedMilliseconds / 1000; // Console.Clear(); Console.WriteLine("Temps total Task: " + temps + " segons"); Console.ReadKey(); }
public static void Main(string[] args) { var clock = new Stopwatch(); var threads = new List <Thread>(); int i; bool continuar = true; String resposta = ""; //Recordeu-vos que el fitxer CSV ha d'estar a la carpeta bin/debug de la solució const string fitxer = "cuaClients.txt"; try { var reader = new StreamReader(File.OpenRead(@fitxer)); //Carreguem la llista clients while (!reader.EndOfStream) { var line = reader.ReadLine(); var values = line.Split(';'); var tmp = new Client() { nom = values[0], carretCompra = Int32.Parse(values[1]) }; cua.Enqueue(tmp); } } catch (Exception) { Console.WriteLine("Error accedint a l'arxiu"); Console.ReadKey(); Environment.Exit(0); } Console.WriteLine("Vols passar per caixa?"); resposta = Console.ReadLine(); resposta = resposta.ToLower(); if (resposta.Equals("sí") || resposta.Equals("s") || resposta.Equals("si")) { continuar = true; } else { continuar = false; } while (continuar) { clock.Start(); for (i = 1; i <= nCaixeres; i++) { var caixera = new Caixera() { idCaixera = i }; var fil = new Thread(() => caixera.ProcessarCua(cua)); fil.Start(); threads.Add(fil); } // Procediment per esperar que acabin tots els threads abans d'acabar foreach (Thread thread in threads) { thread.Join(); } // Parem el rellotge i mostrem el temps que triga clock.Stop(); double temps = clock.ElapsedMilliseconds / 1000; Console.Clear(); Console.WriteLine("Temps total Task: " + temps + " segons"); Console.WriteLine("Vols passar per caixa un altre cop?"); resposta = Console.ReadLine(); resposta = resposta.ToLower(); if (resposta.Equals("sí") || resposta.Equals("s") || resposta.Equals("si")) { continuar = true; } else { continuar = false; } } // Instanciar les caixeres i afegir el thread creat a la llista de threads Console.WriteLine("Gràcies per la seva visita!"); Console.ReadKey(); }
public static void Main(string[] args) { var clock = new Stopwatch(); var tasks = new List <Task>(); //Recordeu-vos indicar la ruta del fitxer string filePath = System.IO.Path.GetFullPath(CLIENTS_FILE); try { //LLEGIM ARXIU CLIENTS using (StreamReader sr = new StreamReader(filePath)) { sr.ReadLine(); while (sr.Peek() != -1) { string line = sr.ReadLine(); var values = line.Split(','); //CREEM ELS CLIENTS AMB LES DADES DE L'ARXIU var tmp = new Client() { nom = values[0], carretCompra = Int32.Parse(values[1]) }; cua.Enqueue(tmp); } } } catch (Exception) { Console.WriteLine("Error accedint a l'arxiu"); Console.ReadKey(); Environment.Exit(0); } clock.Start(); // Instanciar les caixeres i afegir el task creat a la llista de tasks Caixera caix1 = new Caixera() { idCaixera = 1 }; Caixera caix2 = new Caixera() { idCaixera = 2 }; Caixera caix3 = new Caixera() { idCaixera = 3 }; //Instanciem les TASK per cada CAIXERA var task1 = new Task(() => { caix1.ProcessarCua(cua); }); var task2 = new Task(() => { caix2.ProcessarCua(cua); }); var task3 = new Task(() => { caix3.ProcessarCua(cua); }); //Iniciem les TASK task1.Start(); task2.Start(); task3.Start(); //Apilem les TASK per a fer el WAIT tasks.Add(task1); tasks.Add(task2); tasks.Add(task3); // Procediment per esperar que acabin tots els threads abans d'acabar Task.WaitAll(tasks.ToArray()); // Parem el rellotge i mostrem el temps que triga clock.Stop(); double temps = clock.ElapsedMilliseconds / 1000; //Console.Clear(); Console.WriteLine("Temps total Task: " + temps + " segons"); Console.ReadKey(); }
public static void Main(string[] args) { var clock = new Stopwatch(); var threads = new List <Thread>(); //Recordeu-vos que el fitxer CSV ha d'estar a la carpeta bin/debug de la solució //const string fitxer = "CuaClients.txt"; const string fitxer = "CuaClients.txt"; //sino va provar esto directo a la ruta "C:\Users\Portatil\Documents\Eric\clientsEnCua.txt" /* * // Llegim l'arxiu de la ruta principal del projecte * String currentDirectory = Directory.GetCurrentDirectory(); * DirectoryInfo currentDirectoryInfo = new DirectoryInfo(currentDirectory); * // Tirem dos directori enrere per sortir de bin/debug fins el directori del projecte * String ruta = currentDirectoryInfo.Parent.Parent.Parent.FullName; * const string fitxer = "CuaClients.csv"; * ruta = Path.Combine(ruta, fitxer); * */ try { var reader = new StreamReader(File.OpenRead(@fitxer)); //Carreguem la llista clients while (!reader.EndOfStream) { var line = reader.ReadLine(); var values = line.Split(';'); var tmp = new Client() { nom = values[0], carretCompra = Int32.Parse(values[1]) }; cua.Enqueue(tmp); } } catch (Exception) { Console.WriteLine("Error accedint a l'arxiu"); Console.ReadKey(); Environment.Exit(0); } clock.Start(); // Instanciar les caixeres i afegir el thread creat a la llista de threads for (int voltes = 0; voltes < nCaixeres; voltes++) { var caixera = new Caixera(voltes); //instanciem una nova caixera amb el constructor que em fet, pasem un id var thread = new Thread(() => caixera.ProcessarCua()); //afegim a la cua la caixera recent creada thread.Start(); threads.Add(thread); } // Procediment per esperar que acabin tots els threads abans d'acabar foreach (Thread thread in threads) { thread.Join(); } // Parem el rellotge i mostrem el temps que triga clock.Stop(); double temps = clock.ElapsedMilliseconds / 1000; Console.Clear(); Console.WriteLine("Temps total Task: " + temps + " segons"); Console.ReadKey(); }
public static void Main(string[] args) { var clock = new Stopwatch(); var threads = new List <Thread>(); //Recordeu-vos que el fitxer CSV ha d'estar a la carpeta bin/debug de la solució const string fitxer = "CuaClients.csv"; try { var reader = new StreamReader(File.OpenRead(@fitxer)); //Carreguem la llista clients while (!reader.EndOfStream) { var line = reader.ReadLine(); var values = line.Split(';'); var tmp = new Client() { nom = values[0], carretCompra = Int32.Parse(values[1]) }; //Afegim el client a la cua cua.Enqueue(tmp); } } catch (Exception) { Console.WriteLine("Error accedint a l'arxiu"); Console.ReadKey(); Environment.Exit(0); } clock.Start(); int i; // Instanciar les caixeres i afegir el thread creat a la llista de threads for (i = 0; i < nCaixeres; i++) { /*Instanciem la caixera, generant la id, amb el contador del bucle(per exemple). * Per a cada caixera que ens generin, creem un fil que s'encarregarà de fer la crida * per a gestionar les funcions que es criden */ var caixera = new Caixera() { idCaixera = i }; //Mirem que la cua no estigui buida i fem la crida a pocessar cua var fil = new Thread(() => caixera.ProcessarCua()); fil.Start(); threads.Add(fil); } // Procediment per esperar que acabin tots els threads abans d'acabar foreach (Thread thread in threads) { thread.Join(); } // Parem el rellotge i mostrem el temps que triga clock.Stop(); double temps = clock.ElapsedMilliseconds / 1000; Console.Clear(); Console.WriteLine("Temps total Task: " + temps + " segons"); Console.ReadKey(); }
public static void Main(string[] args) { var clock = new Stopwatch(); var threads = new List <Task>(); string filePath = @"..\..\..\clients.csv"; try { using (StreamReader sr = new StreamReader(filePath)) { sr.ReadLine(); while (sr.Peek() != -1) { string line = sr.ReadLine(); var values = line.Split(','); var tmp = new Client() { nom = values[0], carretCompra = Int32.Parse(values[1]) }; cua.Enqueue(tmp); } } } catch (Exception) { Console.WriteLine("Error accedint a l'arxiu"); Console.ReadKey(); Environment.Exit(0); } clock.Start(); // Instanciar les caixeres i afegir el task creat a la llista de tasks Caixera caixera1 = new Caixera { idCaixera = 1 }; Caixera caixera2 = new Caixera { idCaixera = 2 }; Caixera caixera3 = new Caixera { idCaixera = 3 }; threads.Add(Task.Run(() => { caixera1.ProcessarCua(); })); threads.Add(Task.Run(() => { caixera2.ProcessarCua(); })); threads.Add(Task.Run(() => { caixera3.ProcessarCua(); })); // Procediment per esperar que acabin tots els threads abans d'acabar Task.WaitAll(threads.ToArray()); // Parem el rellotge i mostrem el temps que triga clock.Stop(); double temps = clock.ElapsedMilliseconds / 1000; Console.Clear(); Console.WriteLine("Temps total Task: " + temps + " segons"); Console.ReadKey(); }