Hay varios hilos en mi aplicación que funcionan en segundo plano. Se conectan a la base de datos y ejecutan algunas consultas de selección que consumen mucho tiempo. En la mayoría de los casos, estas consultas devuelven solo varios registros. De vez en cuando, sin embargo, pueden devolver decenas de miles de registros. Todos estos son procesados en un bucle.Delphi: tiempo de suspensión del hilo de ajuste
Dado que tal situación puede ocurrir en varios subprocesos al mismo tiempo, no quiero que mi aplicación use el 100% del tiempo de CPU cuando esos subprocesos procesan datos; tampoco quiero hacer que todos los hilos pelee por el tiempo del procesador. Por lo tanto, invoco la función Sleep() en cada iteración de los bucles en esos hilos.
No sé, sin embargo, cómo ajustar el tiempo de suspensión. No quiero que los bucles duren para siempre, por lo que el período de sueño no puede ser demasiado largo. Lo ajusto a 2 milisegundos en cada iteración (en cada hilo) (¿por qué 2ms? - esa es una buena pregunta :)).
Pensé, por otro lado, que podría prolongar el tiempo de sueño, pero llamar a dormir solo una vez cada iteraciones (digamos, dormir (100) cada 50 iteraciones). ¿Qué enfoque debo elegir? Una acción de los bucles toma aproximadamente 30 ms cada uno (sin ningún sueño).
Por favor, asesorar.
Gracias!
Mariusz.
Pero no si este se ejecuta en segundo plano en un equipo que también tiene a alguien trabajando en (por ejemplo, escribir una hoja de cálculo), lo hace quiere que el proceso en segundo plano haga inutilizable el proceso en primer plano. – dummzeuch
Cierto, pero es por eso que escribí que la prioridad del hilo de fondo puede reducirse, manteniendo el resto de las aplicaciones (o el hilo principal) receptivo y al mismo tiempo usando todo el potencial del sistema. En los sistemas modernos (multi-núcleo) mantener todos los núcleos suficientemente cargados es un problema mucho más que la falta de capacidad de respuesta de la aplicación en primer plano. Y la E/S masiva no optimizada es una amenaza mucho mayor para la usabilidad de un sistema que la alta carga de la CPU, de todos modos. – mghie