c++ qt reentrancy

c++ - Documentación qt y reentrada.



reentrancy (1)

Creo que la única respuesta segura a esta pregunta es mirar el código fuente. Claramente los documentos Qt no son suficientes. Los errores deben archivarse con Qt para cada clase de reentrante no documentada.

Según la definición de reincorporación de Qt, hay dos criterios para determinar si una clase Qt es reentrante:

  1. No tiene datos estáticos.
  2. Llama solo a funciones y métodos reentrantes de otras clases reentrantes.

Acceder a una clase de singleton violaría 2.

La documentación de Qt dice esto sobre la seguridad de los hilos y la reentrada :

Nota: las clases Qt solo se documentan como seguras para subprocesos si están destinadas a ser utilizadas por múltiples subprocesos. Si una función no está marcada como segura para subprocesos o reentrada, no debe usarse desde subprocesos diferentes. Si una clase no está marcada como segura para subprocesos o reentrada, no se puede acceder a una instancia específica de esa clase desde diferentes subprocesos.

Esto parece indicar que cada función y clase en Qt debe considerarse no reentrante y no segura para subprocesos, a menos que así se indique explícitamente.

Sin embargo, en la documentación de QRect y QPoint , por ejemplo, no se menciona la seguridad de subprocesos ni la reentrada, pero me cuesta creer que no lo sean. De hecho, esta vieja discusión dice que es una "falta" en la documentación:

Estas clases son solo datos simples (algunos primitivos), no se comparten datos estáticos o estructurados, por lo que son reentrantes. Que no estén marcados como tales, es una falta en nuestra documentación.

Entonces, ¿cómo deberíamos saber si una función es reentrada o no? ¿Se omite la nota de reentrada solo para las clases simples donde está implícita por su obviedad?