Tengo una aplicación (Win 32-bit) que hace que un conjunto de datos cambiantes esté disponible para otras máquinas de la red al escribir un archivo de datos de aproximadamente 100 kbytes por segundo. Otras PC leen el mismo archivo una vez por segundo para acceder y mostrar los datos en ubicaciones remotas. Las colisiones son esperadas y ocurren de vez en cuando y se manejan abriendo el archivo en el modo apropiado. Si un esclavo dado no puede abrir el archivo porque está siendo escrito, no hay consecuencias que resulten de que se le niegue el acceso, simplemente lo obtiene la próxima vez.
El sistema se ha ejecutado sin problemas en WinXP durante varios años pero se acaba de instalar en una red de Windows 8 y se está comportando mal.
Después de un período de tiempo (generalmente muchas horas, y algunas veces días), la PC "maestra" deja de actualizar el archivo - se devuelve cada acceso The process cannot access the file because it is being used by another process
- Así los esclavos ven datos "congelados" de entonces en adelante. Sin embargo, la situación es permanente, y el único curso de acción es salir de la aplicación maestra y reiniciar la PC maestra; solo salir de la aplicación maestra no libera el archivo.
¿Alguien tiene alguna sugerencia para lo que podría estar causando esto?
¿Ayudaría SysInternals ProcessExplorer (usando la función Buscar "manejar")?
Una nota final: el archivo de datos que se usa para hacer que la información disponible se nombre con una extensión MSI
. ¿Podría Windows 8 haber introducido algunas funciones de "niñera" para evitar que las aplicaciones hagan referencia a lo que cree que podrían ser las imágenes del instalador de MSI? Estoy aferrado a las pajitas aquí. Naturalmente, tengo la intención de probar algo más como una extensión, pero el acceso al sistema es difícil, ya que forma parte de un sistema 24-7-365, por lo que quiero reunir tanta información antes de esa fecha.
fuente
Such frequent access to a static file by many machines isn't very efficient.
No entiendo por qué dices eso? En mi PC, escribir este archivo lleva 15 ms y leerlo 4 ms. Esta sobrecarga es aceptable para nosotros, y no estoy seguro de que MySQL sea más rápido. La razón por la que tengo problemas de bloqueo es porque no funciona como creo que debería.