Ejemplos de código del Libro de patrones de seguridad de hilo de Delphi
https://dalija.prasnikar.info/delphitspatt/
https://dalija.prasnikar.info
Parte 2. La biblioteca de tiempo de ejecución central
Capítulo 5. Registro de control de punto flotante
- RotoMath.dpr
- RotoMath.dproj
- Safemath.dpr
- Safemath.dproj
Capítulo 7.1. Parámetros
- Parámetros.dpr
- Parámetros.dproj
- Parametersmainf.pas
- Parametersmainf.dfm
Capítulo 8. Campos de clase, singletons e instancias predeterminadas
- Singletons.dpr
- Singletons.dproj
- Singletonsmainf.pas
- Singletonsmainf.dfm
- SingletOnClasses.pas
- Singletonlocal.pas
- Singletonclassprop.pas
- Singletonlazy.pas
Capítulo 12. Colecciones
- COLECCIONSTEST.DPR
- CollectionStest.dproj
- ColeccionesMainf.pas
- ColeccionesMainf.DFM
Capítulo 13. Procesamiento de colección paralela
Parte 3. Marcos centrales
Capítulo 16. Serialización
- Serialización.PDPR
- Serialización.dproj
- Serialización Mermanf.pas
- Serializationmainf.dfm
Capítulo 17. System.net
- Netclient.dpr
- Netclient.dproj
- Netclientmainf.pas
- Netclientmainf.dfm
Capítulo 19. Indy
- Indy.dpr
- Indy.dproj
- Indemainf.pas
- Indyainf.dfm
Capítulo 20. Descanso
- RESTDEMO.DPR
- Restdemo.dproj
- RestMainf.pas
- RestMainf.dfm
Capítulo 21. Expresiones regulares
Parte 5. Gráficos y procesamiento de imágenes
Capítulo 27. Consumo de recursos
- Recursos.PDPR
- Recursos.dproj
- RecursosMainf.pas
- RecursosMainf.DFM
Capítulo 30. Ejemplo de gráficos VCL
- Imágenes.PDPR
- Images.dproj
- Imagesmainf.pas
- Imagesmainf.dfm
Parte 6. Marcos personalizados
Capítulo 33. Registro
- Nx.log.pas
- Logging.dpr
- Logging.dproj
Capítulo 34. Tokens de cancelación
- Nx.tokens.pas
- Tokens.dpr
- Tokens.dproj
- Tokensmainf.pas
- Tokensmainf.dfm
Capítulo 35. Event Bus
- Nx.horizon.pas
- Horizon.dpr
- Horizon.dproj
- Horizonmainf.pas
- Horizonmainf.dfm
Capítulo 36. Medición del rendimiento
- Nx.chronos.pas
- Zerothread.dpr
- Zerothread.dproj
NOTA: El propósito de los ejemplos presentados es mostrar el código no uniforme y los problemas que pueden surgir en dicho código, o mostrar patrones de codificación generales para lograr un código seguro para los subprocesos mientras se ejecutan múltiples hilos. Como tantos de ellos no implementan la limpieza adecuada en el cierre de la aplicación, y si cierre la aplicación antes de comenzar las tareas de fondo o los hilos completaron su trabajo, la aplicación puede bloquearse.
Para realizar un cierre limpio, debe esperar la finalización de la tarea o el hilo o usar algún otro mecanismo que evitará acceder a la GUI u otros datos compartidos durante el apagado de la aplicación.
Puede encontrar ejemplos sobre cómo cerrar la aplicación en https://github.com/dalijap/code-delphi- async Capítulo 35.2 Limpieza en la destrucción de la GUI