Estoy trabajando en un mecanismo de tiempo de espera de solicitud. Mi enfoque inicial sería crear un System.Threading.Timer para cada solicitud. El número de solicitudes simultáneas podría escalar hasta miles.¿System.Threading.Timer es lo suficientemente eficiente para miles de temporizadores simultáneos?
Me pregunto si debería crear un TimeoutScheduler que internamente usaría solo un temporizador en lugar de tener uno por solicitud.
¿Alguien que conozca las partes internas de System.Threading.Timer me da algunas ideas sobre si un TimeoutScheduler sería una buena idea o si solo trataría de optimizar algo que ya es lo suficientemente eficiente?
Nota: Para mi escenario, la precisión del temporizador no es importante.
(he hecho un poco de prueba de rendimiento con System.Threading.Timer con un montón de temporizadores simultáneos. Parecía escalar bien, pero no estoy seguro de si se va a poner presión no deseada en un sistema real)
El artículo de Raymond Chen describe un tipo diferente de temporizador. – SLaks
@SLaks: el artículo de Raymond Chen no describe ningún tipo específico de temporizador. Hace una mención de paso al temporizador de Windows Forms al final, y le aseguro que soy consciente de la diferencia, pero ** todos los temporizadores de ** .NET envuelven los temporizadores de Windows y están sujetos a las mismas advertencias. – Aaronaught
En realidad, el artículo de Raymond Chen describe temporizadores creados por SetTimer. El 'System.Threading.Timer' es en realidad un Timer Queue Timer (http://msdn.microsoft.com/en-us/library/ms686796(v=VS.85).aspx), que es esencialmente un solo temporizador y un mecanismo eficiente para determinar cuándo disparar el próximo evento. –