Coexistencia de comandos seguros y no seguros para hilos

Traducido automáticamente de Deepl

¿Alguna vez has necesitado utilizar métodos con llamadas thread-safe y no thread-safe, con condiciones que saltan los comandos que no son thread-safe? Actualmente el compilador impide hacer esto y se lanza un error, sin embargo hay una bandera que te permite desactivar esta comprobación y esta entrada del blog te muestra cómo.


En un método de llamada, es posible que ya hayas cambiado ambas partes del código; una parte para el modo preventivo y la otra para el modo cooperativo. Sin embargo, en este caso, el compilador considera que todo el método no es thread-safe, aunque la parte cooperativa del código no se ejecute en modo preemptive. Los métodos que llaman a éste tampoco se consideran seguros para los hilos.

¿Y ahora qué?

Para ayudarle con esta transición de cooperativo a preventivo, 4D le permite ahora deshabilitar la comprobación de seguridad de hilos del compilador de los comandos en partes del código. Para hacer esto, simplemente coloque la directiva del compilador //%T- antes del código no seguro para hilos y //%T+ después de él.

Este es un ejemplo que el compilador considera seguro para los hilos:

PROCESS PROPERTIES(Current process;$name;$state;$time;$flags)
$isPreemptive :=($flags?? 1)
If ($isPreemptive)
LOG EVENT (Into Windows log events; "Error xy occured")
Else
//%T-
DIALOG ("myErrorDialog";New object("message"; "Error xy occured"))
//%T+
End if

Si ejecuta comandos no seguros para hilos entre las directivas del compilador //%T- y //%T+ en un proceso preventivo, 4D simplemente lanza un error.

Avatar
• Propietario de producto - Damien Fuzeau se ha unido al equipo de 4D Product en febrero de 2019. Como Propietario de producto, está a cargo de escribir historias de usuario, y luego traducirlas a especificaciones funcionales. Su trabajo también implica asegurarse de que las implementaciones de funcionalidades entregadas estén cumpliendo con las necesidades del cliente. Damien es licenciado en ingeniería de software por la Universidad de Nantes. Estuvo más de 23 años en su anterior empresa, primero como desarrollador (descubriendo 4D en 1997), y más tarde como gerente de ingeniería y arquitecto de software. Esta compañía es un Partner OEM de 4D y ha desplegado softwares empresariales basados en 4D para miles de usuarios, en cientos de servidores. Por lo tanto, Damien está acostumbrado al desarrollo y despliegue de 4D en un contexto multilingüe.