Estoy desarrollando un programa C# y tengo una función que consume demasiada CPU. Me gustaría saber una forma de controlar esto por código (no con cualquier aplicación externa) y restringir el porcentaje de uso de la CPU. Por ejemplo, si utiliza el 90% del uso de la CPU, para que mi aplicación consuma solo un 20%, incluso si se vuelve más lenta. Debe hacerse automáticamente y desde dentro de la aplicación. Si proporciona una clase, sería fantástico.¿Cómo restringir el uso de CPU que toma un programa C#?
Respuesta
No sé si puede hacerlo, pero puede cambiar la prioridad de subproceso del subproceso de ejecución a través de la propiedad Priority. Lo establecería por:
Thread.CurrentThread.Priority = ThreadPriority.Lowest;
Además, no creo que realmente quiera taparlo. Si la máquina está inactiva, le gustaría que se ocupe de la tarea, ¿verdad? ThreadPriority ayuda a comunicar esto al programador.
Eso ayudará a algunos, y es la única forma que conozco de hacerlo. –
Esta es la mejor y única forma de hacerlo correctamente. – Will
He visto aplicaciones de Windows que pueden limitarse a sí mismas para decir ... digamos el 50% de la CPU. La tasa de error fue inferior al 1%. –
Puede ralentizar un bucle llamando a Thread.Sleep (milisegundos) dentro del bucle. Eso le devuelve la CPU al programador.
Pero 'consumir demasiada CPU' me hace pensar que puede tener problemas más fundamentales. ¿Este hilo está sondeando y esperando algo más? Si es así, debería considerar el uso de Eventos u otro mecanismo de señalización basado en kernel.
Supongo que necesita consultar algún tipo de API de sistema operativo para averiguar qué cantidad de CPU está consumiendo y tomar decisiones de regulación (como Thread.Sleep) a partir de eso.
- 1. Cómo reducir el uso de CPU de un programa?
- 2. ¿while loop siempre toma el uso completo de la CPU?
- 3. C++ CPU Registrar uso
- 4. ¿Cómo restringir el tipo genérico a debe tener un construtor que toma ciertos parámetros?
- 5. Lua :: ¿Cómo escribir un programa simple que cargará múltiples CPU?
- 6. Cómo limitar el uso de la CPU de un proceso
- 7. ¿Puede un programa C# medir su propio uso de CPU de alguna manera?
- 8. C# primera vez que uso GetRequestStream() toma 20 segundos
- 9. Cómo restringir un programa a una sola instancia
- 10. ¿Cómo obtener el uso de la CPU en C?
- 11. Uso de telnet en un programa C
- 12. C# AssemblyFileVersion uso dentro de un programa
- 13. Monitoreo de CPU y uso de disco de un solo programa
- 14. cómo configurar la afinidad de la CPU de un programa?
- 15. cómo controlar el uso de CPU de un script PHP
- 16. ¿Cómo restringir ffmpeg para usar solo el 50% de mi CPU?
- 17. ¿Cómo vaciar el caché de CPU en Linux desde un programa C?
- 18. Conseguir uso de la CPU de un proceso en C#
- 19. C#: Crear uso de la CPU a un porcentaje personalizado
- 20. Aplicación C# - Reducir el uso de la CPU
- 21. Cómo restringir un genérico para que sea de tipo enumeración?
- 22. uso de CPU de subproceso múltiple en C#
- 23. Devolver el uso de la CPU en WMI con C#
- 24. C/C++ uso de características especiales de CPU
- 25. Obtención de uso de CPU con golang
- 26. Cálculo del uso de CPU
- 27. ¿Cómo puedo limitar el uso de CPU FFMpeg?
- 28. Python/PySerial y uso de CPU
- 29. Cómo obtener el uso total de la CPU en Linux (C++)
- 30. Expresión regular cuelga el programa (100% de uso de la CPU)
Esto suena como una muleta: atacar el síntoma en lugar de un problema. ¿Por qué no publicas lo que intenta hacer el método y nos pides ayuda para optimizar el método? –
Podría ser una muleta, pero puedo pensar en algunas aplicaciones para esta idea, tales como: una tarea de fondo vinculada a la CPU para analizar números, un nodo en un entorno informático distribuido de PC de oficina, un programa de inteligencia artificial para supervisar y aprender de mi hábitos de uso –
Para limitar el uso de la CPU al 50%, ejecútelo en doble núcleo; para un límite del 25%, ejecútelo en cuatro núcleos: D – Alan