Salut,
Me revoilà avec la suite de ma problématique.
Désormais, j'ai un service et une appli desktop qui fonctionnent de concert selon ce principe :
1) le service crée un fichier mappé 'hébergeant' une structure de données et crée un événement. à chaque fois qu'il écrit dans le fichier mappé, il déclenche l'événement.
2) d'un autre coté, mon appli desktop ouvre le même fichier mappé et surveille en permanence à l'aide d'un thread la détection de l'événement. dès que ce dernier est détecté, l'appli lit les données du fichier mappé partagé et les traite.
j'ai deux problèmes :
1) le fonctionnement du service est basé sur un ou plusieurs threads qui provoquent l'écriture dans la zone mémoire du fichier mappé. il est donc théoriquement possible que deux threads accèdent à cette zone mémoire en même temps pour y écrire leurs données -> je risque donc de perdre des données.
dans ce cas, quelle solution s'offre a moi pour pallier à ce problème ?
2) de temps en temps, le service doit certainement écraser les données du fichier mappé avant même que l'appli desktop n'ait le temps de les traiter -> la encore, je risque de perdre des données.
sachant que le service traite de son coté des données en temps réel et que sa capacité à les traiter rapidement est obligatoire, cela m'empêche donc de le mettre en pause même si l'appli n'a pas traité lesdites données.
dans ce cas, comment mettre en place coté appli desktop un système de cache. quelle piste serait la plus appropriée d'après vous pour faire cela ?
merci d'avance aux courageux qui auront lu mon message en entier et encore plus merci à ceux qui pourront m'apporter un peu d'aide.
Partager