¿Qué Diablos es MUTEX? Programación Avanzada

Поделиться
HTML-код
  • Опубликовано: 2 ноя 2024

Комментарии • 42

  • @hdeleonnet
    @hdeleonnet  2 года назад +5

    Regístrate y encuentra trabajo en Lemon: l.lemon.io/hdeleon
    Mis cursos: hdeleon.net/cursos-premium/

  • @victorpuerta5314
    @victorpuerta5314 2 года назад +11

    Que bueno, justo hice un examen en la universidad ayer sobre threads y procesos donde era necesaria la sincronización con, mutex, semaphors y monitors, también entraba la parte de comunicación entre procesos!

  • @cCcesSsarRr
    @cCcesSsarRr 2 года назад

    Termine de ver el video hermano, excelente herramienta.

  • @asturnebur
    @asturnebur 2 года назад +2

    No puedes poner mutex fuera del while para protegerlo y ahorrar el if ?

  • @mauricetriana1700
    @mauricetriana1700 2 года назад

    Un crack, a quien más se le entiende así de claro sino a Héctor; Me hubiera gustado más con cervezas y sorbos de cerveza

  • @emcattaneo
    @emcattaneo 2 года назад +2

    Muy buen video.. Estaria bueno otro explicando con un recurso de una base de datos. Muchas gracias

  • @samuelmacias5425
    @samuelmacias5425 2 года назад +3

    Buena explicación, una duda la excepción no ocurrió porque entraron al mutex pero como no habían más enteros que descontar no entro al if y termino la ejecución sin ejecutar el mutex reléase?

    • @diegoprietto
      @diegoprietto 2 года назад +3

      Esto mismo estaba pensando, esperaba que libere el mutex después del if en lugar de colocar una excepción, pero tampoco soy muy experto en esto

  • @Paul-po4md
    @Paul-po4md 2 года назад +1

    muy bueno hector, todos los dias se aprende algo nuevo con tus videos

  • @cCcesSsarRr
    @cCcesSsarRr 2 года назад +1

    Que bien que esta vez hubieron pastel en la fiesta y no cervezas 😁. Excelentes videos como siempre hermano

  • @brauliomariano
    @brauliomariano 2 года назад

    Excelente aporte, gracias Héctor.

  • @cristiancalichio5335
    @cristiancalichio5335 2 года назад +1

    Muy bueno Héctor, muchas gracias por este nuevo video! Un tema muy importante en el que tengo que profundizar

  • @emanuelcordovamontiel1017
    @emanuelcordovamontiel1017 5 месяцев назад

    Hola, Héctor. ¿Se puede usar Mutex con operaciones asincronas?

  • @jarnioo7
    @jarnioo7 2 года назад

    Simplemente un crack gracias por compartir tus conocimiento Héctor

  • @xek2878
    @xek2878 2 года назад

    Excelente video, pero cual es la diferencia con el lock, o el semáforo?

  • @RobertAlexanderParraCiro
    @RobertAlexanderParraCiro 2 года назад +1

    Que diferencia hay entre usar la instancia mutex y lock o Semaphore?

  • @Kamihakker
    @Kamihakker 2 года назад

    Pensé que ibas a explicar Lock también 😂. Aunque me ha parecido un excelente video 😌

  • @pequenofrancisco1926
    @pequenofrancisco1926 2 года назад

    Muchas gracias, lo explicas superbien, cual es la ventaja de mutex sobre lock

  • @adolphin6041
    @adolphin6041 2 года назад

    Que fácil que lo transmitis, el concepto lo entendi a la perfección, muchas gracias por tu contenido :3

  • @yonatancuervo3489
    @yonatancuervo3489 2 года назад

    excelente video

  • @ale_gallardo
    @ale_gallardo 2 года назад

    Buen video, se entendió perfecto. Consulta, las zonas críticas con qué otro objeto se pueden administrar aparte de los Threads?

  • @clamato2010
    @clamato2010 2 года назад

    Buena info lo malo es que odio C# pero se entiende para hacerlo en c++ nativo

  • @luiscruz88
    @luiscruz88 2 года назад +1

    Excelente! muy bien explicado!

  • @danielperpar8782
    @danielperpar8782 2 года назад +1

    Hola, si se hiciera la release del mutex después del "if" no sería necesario utilizar try-catch, ¿correcto?, al final siempre vamos a querer liberar el mutex.

  • @gusget
    @gusget 2 года назад

    increible la explicacion. siempre enseñando de primera Hector 🤟

  • @josuedev2440
    @josuedev2440 2 года назад

    Excelente info!! 🍺

  • @Jocker88
    @Jocker88 2 года назад

    Muy buena explicación, solo tengo una duda. Estás utilizando un try-catch para la toma de decisiones. En la documentación veo que hay un campo WaitTimeout y un ejemplo " if(mut.WaitOne(1000))" ¿No sería mejor alternativa? Pregunto por que no estoy seguro del caso. El WaitOne recibe un TimeSpan o el tiempo en ms como Int32.
    Un saludo y gracias por el vídeo, no conocía esto del Mutex, había usado semáforos como SemaphoreSlim y Semaprhore pero el Mutex tiene claramente otro contexto y ventajas en su contexto específico.

  • @mevgdev
    @mevgdev 2 года назад

    Cual es la diferencia entre el hilo y el task?

  • @mectoystv
    @mectoystv 2 года назад

    Que interesante, consulta esta forma de aplicación Mutex deberá tener en eBay cuando se realiza subasta y hay muchos participantes? O en las web de compras y hay muchos conectados no?

  • @ErickGonzalez-uw3cg
    @ErickGonzalez-uw3cg 2 года назад

    Gracias carnal por compartir conocimiento... Me surge una duda y quería preguntarte cual crees que sea la mejor práctica... Resulta que tengo que consumir un SP que bloquea tablas (En un FilesystemWatcher y mando como parámetro el nombre del fichero para que SQL lo procese...) pero pues si detectan más de 2 eventos a la vez... Me da un error de deadlocked on lock... Crees que así con Mutex sería la mejor práctica? o me podrías sugerir alguna alternativa mejor??? Gracias de antemano y gracias de nuevo por todo!!!!

    • @Leo-bn3wh
      @Leo-bn3wh 2 года назад

      Existe stack overflow

  • @MaxiHnet
    @MaxiHnet 2 года назад +2

    El primero en verte!!! Genio!!!!

  • @omarvazquezbaez3573
    @omarvazquezbaez3573 2 года назад +2

    También seria una buena idea mostrar lock y semáforos para la concurrencia, buen video 🤘

  • @SalaB-Rock
    @SalaB-Rock 2 года назад +1

    🤘

  • @MrElmarqueli
    @MrElmarqueli 2 года назад

    Hola Héctor se me ocurrió esto, pensando en una clase que contenga un metodo static al cual se le cuele cualquiera que quiera:
    public class Person
    {
    public Cake _Cake;
    public string _name;
    public Mutex _mutex;
    public Person(Cake cake,string name, Mutex mutex)
    {
    _Cake = cake;
    _name = name;
    _mutex = mutex;
    }
    }
    public class ComerPastel
    {
    public static void Bite(object Persona) // 0) // Comprueba antes de entrar al bucle si _persona no es null y si hay Porciones.
    {
    try
    {
    _persona._mutex.WaitOne(); // Si ya hay un hilo en el proceso hace esperar al que esta queriendo acceder a este.
    if (_persona._Cake.GetQuantity() > 0) // Ahora hacemos otra comprobacion para el proceso que quedo esperando, par comprobar que el ultimo proceso que paso se halla acabado el pastel.
    {
    Console.WriteLine($"{_persona._name} le muerde al pastel {_persona._Cake.GetQuantity()}");
    _persona._Cake.BiteMe(); // Morder el pastel
    Console.WriteLine($"{_persona._name} lo deja en {_persona._Cake.GetQuantity()}");
    _persona._mutex.ReleaseMutex();
    }
    }
    catch (AbandonedMutexException ex)
    {
    Console.WriteLine($"Lamentablemente ya no hay pastel {_persona._name}");
    }
    }
    }
    }
    ==== Y en Program: =======
    Mutex mut = new();
    var MyCake = new Cake(100);
    var p1 = new Person(MyCake, "Hector", mut);
    var p2 = new Person(MyCake, "Rosana", mut);
    var p3 = new Person(MyCake, "Javier", mut);
    var p4 = new Person(MyCake, "Marco", mut);
    var p5 = new Person(MyCake, "Roberto", mut);
    string UnHola = "Hola"; // En este caso no hara nada porque no es un objeto Person que se requiere en el metodo Bite.
    var thread = new Thread(new ParameterizedThreadStart(ComerPastel.Bite));
    thread.Start(UnHola );
    thread = new Thread(new ParameterizedThreadStart(ComerPastel.Bite));
    thread.Start(p2);
    thread = new Thread(new ParameterizedThreadStart(ComerPastel.Bite));
    thread.Start(p3);
    thread = new Thread(new ParameterizedThreadStart(ComerPastel.Bite));
    thread.Start(p4);
    thread = new Thread(new ParameterizedThreadStart(ComerPastel.Bite));
    thread.Start(p5);
    thread = new Thread(new ParameterizedThreadStart(ComerPastel.Bite));
    thread.Start(p1);
    thread = new Thread(new ParameterizedThreadStart(ComerPastel.Bite));
    thread.Start(p3);
    thread = new Thread(new ParameterizedThreadStart(ComerPastel.Bite));
    thread.Start(p5);
    thread = new Thread(new ParameterizedThreadStart(ComerPastel.Bite));
    thread.Start(p4);
    thread = new Thread(new ParameterizedThreadStart(ComerPastel.Bite));
    thread.Start(p5);
    thread = new Thread(new ParameterizedThreadStart(ComerPastel.Bite));
    thread.Start(p1);

  • @adcueto
    @adcueto Год назад

    Aun sigo sin entender, se supone que en concurrencia solo hay un hilo ejecutandose al mismo tiempo.. porque usar Mutex?

  • @batman4523
    @batman4523 2 года назад +1

    estoy seguro ese lomito programa mejor que varios que conozco 🤣🤣

  • @Danielspss
    @Danielspss Год назад

    Pasa el wallp pls

  • @jexuspromaza7196
    @jexuspromaza7196 19 дней назад

    verga que cosa mas confusa xd

  • @jarnioo7
    @jarnioo7 2 года назад

    Muy básico => muy primitivo

  • @johnnyelcoste
    @johnnyelcoste 2 года назад

    excelente video