Mutex. Sincronización de hilos. Programar en C, Linux
HTML-код
- Опубликовано: 18 сен 2024
- Presentación de un problema en el que dos hilos acceden a una variable global para incrementarla y decrementarla. Explicación de por qué no es una operación atómica el incremento y decremento ( se muestra para entenderlo del código generado en ensamblador).
Solución mediante mutex. Escritura, compilación y ejecución del ejemplo
Correccion: el mutex debe ser declarado como "static"
Admiro mucho tu trabajo, muchas gracias, he aprendido bastante con tus tutoriales.
Corríjanme si me equivoco, pero entiendo que aún así los dos hilos compiten por el recurso, es decir hay condición de carrera. La diferencia en el caso del uso de mutex es que el primero que ejecute la línea de bloqueo se "adueña" del acceso. Por eso, aún usando mutex, no podemos asegurar si se realiza primero la resta de 10000 o la suma de 10000. Con semáforos podemos evitar también la condición de carrera. Y para quien preguntó, entiendo que semáforo y mutex se diferencian también en que semáforo permite que cualquier hilo modifique su estado, en cambio mutex tiene ownership, es decir, un único hilo es el que gestiona el acceso.
Por lo demás, excelente video, muchas gracias! Y muy lindo nombre de canal.
Excelente! Claro, práctico y directo al punto :-)
Bien explicado y conciso. Gracias por tu buen trabajo.
excelente video, muy bien explicado, si apruebo es gracias a vos !!
En serio? Me alegra saberlo!!!
Un video muy bien explicado. Me ayudó muchísimo. Muchas gracias, espero puedas retomar este canal que tiene contenido muy bueno. Saludos.
Gracias.
Quiero grabar otro video en breve... A ver si antes de que acabe el año lo hago... Es que no encuentro tiempo, pero me encanta hacerlos porque aprendo un montón
Saludos
@@WhileTrueThenDream De verdad ya he visto varios videos del canal y en todos he aprendido algo nuevo de una forma muy bien explicada. Te felicito, se nota que te gusta mucho hacerlos jeje.
Estaré al pendiente de nuevos videos :)
Gracias por tu respuesta y saludos.
Excelente video, me gustaría saber cual es la diferencia entre MUTEX y semáforo y cuando es mejor usar uno u otro. Saludos
Excelente ejemplo, muchas gracias!!!
Muy bien explicado! Muchas gracias :D
Gracias por el vídeo, la forma de explicar, me sirvió mucho
Gracias Señorita!
Muchas gracias por tus videos!
Excelente! Gracias.
Excelente trabajo!
No sé si se ha comentado antes, pero creo que te falta un "return NULL;" para finalizar las dos funciones thread_routine( ){ }. Tal y como la tienes declarada devuelve un puntero de tipo non-void.
Tus vídeos son geniales, podrías subir vídeo de condicionales tipo cond_wait y demás para mutex? Un saludo!
Hola.
Gracias por la sugerencia, el tema lo tengo apuntado...me falta el tiempo
señora madre. gracias
Gracias. Por el vídeo.
Muy buen video. Tengo un problema, siempre se ejecuta un hilo, termina y comienza el siguiente, por lo tanto sin utilizar el mutex igualmente el count termina en 10. El código lo tengo idéntico al del video. Puede ser que tenga algo que ver el planificador? Lo probé en una maquina virtual con ubuntu y tambien en el Ubuntu que traen los windows10. Gracias!
Una consulta, para el caso de los archivos es necesario agregar mutex o con los permisos con los cuales los abro (con fopen por ejemplo) ya es suficiente? Gracias
Que diferencia hay en usar semáforos a mutex para sincronizar?
Hola.
En el foro stack overflow hay diversas explicaciones y un artículo en lanzado muy interesante.
Saludos!
te felicito por tus videos bien explicados , pero no tengo ni idea de programar y en linux mint soy nuevo, me gustaria aprender a crear un programa y ejecutarlo en mi linux , para asi aprender todo el proceso de incluir ficheros y demas pero no se como, si me pudieras echar un cable o algien que lea este comentario estaria agradecido.
Hola.
Necesitas un editor de texto, un compilador, gcc , y ver un tutorial de por ejemplo un Hello World y de cómo compilar con gcc desde la linea de commandos. Tambien podrias evitar hacer ésto manualmente usando un IDE tipo eclipse... creo que hice dos tutoriales hace algun tiempo...están en el cabal. Saludos
Entiendo y como íntegro todos los archivos y demás para que el programa se habrá y funcione, por ejemplo un chatbot que está muy de moda, y más cosas que quizás en un tutorial podrías explicar, todo completo, gracias por tu atencion
Hola.
Entiendo q necesitas entonces ver los siguientes trmas:
-Directivas de preprocesador "include"
- Como incluir en gcc los archivos .h y librerias
Estoy ahora preparando un video sobre makefiles, talvez te sirva
Los chatbos no son mi fuerte...yo me dedico a embedded. ;-)
Te lo agradezco. Creo que necesito conocer todos los temas para enterder los paso a seguir, que por cierto me es difícil de entender de momento, eres muy atenta a los coment. Gracias de nuevo, no suelo escribir pero me interesa, tener una futura salida laboral el trabajo físico tiene límites, ciao
00:15 ¿Qué es el mutex?