es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Utilizando mutex en C/C++ mixto con portabilidad a entornos Linux y Windows

Cómo compartir un mutex entre C++ y C de manera adecuada para Windows y Linux.

Primero, utilicé pthread, que funcionó correctamente en Linux y en Windows Cygwin (solo se utilizó en los archivos de C++).
Luego cambié a MSYS2, que parece tener problemas con pthread. Pero cambiar a std::thread es sencillo.
Pero ¿cómo compartir un mutex?

Quiero deshacerme de pthread, pero creo que no es posible incluir std::mutex en un archivo de C.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para compartir un mutex entre C++ y C en Windows y Linux, puedes crear el mutex en el archivo de C++ utilizando std::mutex y pasar un puntero al mutex a las funciones de C que lo requieran.

    En las funciones de C, puedes utilizar funciones específicas del sistema operativo para crear un objeto mutex compatible e inicializarlo con el puntero al mutex pasado por el código de C++. Para Windows, puedes utilizar la función CreateMutex y para Linux, puedes utilizar la función pthread_mutex_init.

    Entonces, cuando se necesite el mutex, el código de C++ y C pueden utilizar el mismo objeto de mutex y bloquearlo/desbloquearlo según sea necesario.

    Por lo tanto, al utilizar este método, puedes compartir un mutex entre C++ y C tanto en Windows como en Linux, asegurando un funcionamiento adecuado.

Comments are closed.