Dos procesos de Linux abren y mmap el mismo/dev/shm/archivo de memoria compartida y lo utilizan como memoria común. Pregunta: ¿Cuál es la forma más simple y mejor para que un proceso "despierte" el otro proceso para notificar que debería verse en la memoria? Por ejemplo, ¿puede un proceso causar un evento poll() para el descriptor de archivo del otro proceso? La solución no necesita ser portátil, pero me gustaría que fuera simple.Causa de un evento de encuesta de Linux en un archivo de memoria compartida
Respuesta
Es por eso que POSIX tiene variables de condición.
Defina una variable de condición POSIX compartida y su mutex asociada en la región de memoria compartida.
Luego, espere un hilo en la variable de condición y el otro señale el evento variable de condición cuando quiere que el otro hilo se vea en la memoria.
Hay un montón de material en la web en las variables de condición. Aquí hay uno corto bastante bueno: https://computing.llnl.gov/tutorials/pthreads/#ConditionVariables
También puede considerar el uso de un semáforo (POSIX nombrado semáforo) también para resolver esto.
Un ejemplo simple, se utiliza la memoria compartida (En el ejemplo que se encuentra en System V, pero se puede utilizar con POSIX también) y POSIX semáforo está en el enlace, How can 2 processes talk to each other without pipe()?
- 1. Archivo de memoria compartida en PHP
- 2. Un simple programa de memoria compartida en C++ escrito en Linux: falla de segmentación
- 3. Borrado de la memoria compartida con ipcrm en Linux
- 4. C++ pérdida de memoria compartida, ¿cómo borrar la memoria compartida?
- 5. ¿Cómo enumerar los procesos conectados a un segmento de memoria compartida en Linux?
- 6. ¿Alguien tiene un buen contenedor de memoria compartida para C++?
- 7. ¿La eliminación de un JFrame causa una fuga de memoria?
- 8. Linux: ¿Cómo incrustar información de versión en una biblioteca compartida y en un archivo binario?
- 9. Eliminar toda la memoria compartida y los semáforos en Linux
- 10. configuración de memoria compartida postgresql
- 11. Biblioteca compartida dinámica de C++ en Linux
- 12. librería compartida de Linux que utiliza un símbolo indefinido biblioteca compartida
- 13. I2C escribir encuesta de confirmación en Linux Kernel
- 14. Biblioteca de memoria compartida distribuida para C++?
- 15. ¿cómo se llama un archivo de biblioteca compartida por dos procesos diferentes en Linux?
- 16. ABAP: sincronización de objetos de memoria compartida
- 17. Cualquier concepto de memoria compartida en Java
- 18. Conflicto de banco de memoria compartida GPU
- 19. Sockets de dominio UNIX frente a memoria compartida (archivo asignado)
- 20. Exportación explícita de funciones de biblioteca compartida en Linux
- 21. Colocación de objetos de Python en la memoria compartida
- 22. Regiones de memoria purgables en Linux
- 23. Memoria compartida entre procesos de python
- 24. ¿Qué causa un identificador de archivo no válido en MATLAB?
- 25. C++: protección de memoria compartida OpenMP
- 26. Elegir una solución de memoria compartida distribuida
- 27. memoria compartida, MPI y sistemas de colas
- 28. Memoria compartida distribuida en .NET
- 29. Uso de memoria compartida con fork()
- 30. Punteros dentro del segmento de memoria compartida