Estoy buscando una forma de hacer un registro asíncrono y seguro para subprocesos en mi proyecto C++, si es posible en un archivo. Actualmente estoy usando cerr
y clog
para la tarea, pero dado que son sincrónicos, la ejecución se detiene brevemente cada vez que se registra algo. Es una aplicación relativamente pesada en gráficos, por lo que este tipo de cosas es bastante molesto.Registro asíncrono seguro de subprocesos en C++
El nuevo registrador debe usar E/S asíncronas para deshacerse de estas pausas. La seguridad de subprocesos también sería deseable ya que pretendo agregar algo de subprocesamiento básico pronto.
Consideré un enfoque de un archivo por hilo, pero parecía que eso haría que manejar los registros fuera una pesadilla. ¿Alguna sugerencia?
¿No significaría un mutex que si un hilo ya está intentando escribir, tendría que girar hasta que se desbloqueara? ¿Cómo ayuda esto? – Electro
No demoraría la conversión del objeto en la secuencia. Ponerlo en otro hilo significa tener que sincronizarlo ... y es probable que duela como el infierno. –
@Electro - no gira, pero bloquea. Pero si no está procesando cadenas, es un intervalo MUY corto para cargar la cola. El procesamiento de cadena se realiza mediante el hilo de registro. @Matthieu, hacer el procesamiento de cadenas en tiempo real duele mucho más que cualquier bloqueo de mutex mientras se carga una cola. –