Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
        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();
        }
Exemplo n.º 3
0
        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();
        }
Exemplo n.º 4
0
        /* Cua concurrent
         *              Dos mètodes bàsics:
         *                      Cua.Enqueue per afegir a la cua
         *                      bool success = Cua.TryDequeue(out clientActual) per extreure de la cua i posar a clientActual
         */

        #endregion

        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 newClient = new Client()
                    {
                        name = values[0], articles = Int32.Parse(values[1])
                    };
                    cua.Enqueue(newClient);
                }
            }
            catch (Exception)
            {
                //En cas de que falli l'arxiu CSV entrarà al catch i mostrarà aquest missatge d'error.
                Console.WriteLine("Error accedint a l'arxiu");
                Console.ReadKey();
                Environment.Exit(0);
            }

            //Comença el temporitzador.
            clock.Start();



            // Instanciar les caixeres i afegir el thread creat a la llista de threads
            for (int i = 1; i <= maxCax; i++)
            {
                var cax = new Caixera()
                {
                    idCax = i
                };
                var fil = new Thread(() => cax.cua());
                //operadors lambda
                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();
        }
Exemplo n.º 5
0
        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();
        }
Exemplo n.º 6
0
        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();
        }
Exemplo n.º 7
0
        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();
        }
Exemplo n.º 8
0
        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();
        }