Bonjour,
En Java, je souhaite réaliser deux applications. L'une écrit dans un fichier, l'autre le lit.
Le problème est que l'écriture et la lecture peuvent se faire simultanément.
Comment gérer les locks dans ce cas ?
Bonjour,
En Java, je souhaite réaliser deux applications. L'une écrit dans un fichier, l'autre le lit.
Le problème est que l'écriture et la lecture peuvent se faire simultanément.
Comment gérer les locks dans ce cas ?
L'écriture se fait à la fin du fichier, ou alors n'importe ou dans le fichier ?
Si c'est à la fin, il n'y a pas de lock à faire. Le lecteur attend simplement les données en lecture bloquante.
N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
Que la force de la puissance soit avec le courage de ta sagesse.
Ok, merci.
Et qu'en est-il des open/close à répétition ? Est-ce que ça ne bouffe pas trop de CPU / IO, à concurrence d'une entrée par seconde ? Est-il préférable de garder le fichier ouvert ? Si oui, comment le lecteur doit-il fonctionner ?
Est-ce que vous êtes vraiment obligé d'en écrire une toute les secondes? Pouvez vous en écrire une toute les cinq secondes? Un buffer peut réduire la fréquence des accès disques.
Le mieux est de laisser le fichier ouvert en lecture par le lecteur. Un read bloquant suffit. Par contre tu devras ajouter un code de vérification pour ne pas faire un traitement trop tôt.
Exemple : l'écrivain donne un nom de méthode par ligne. Le lecteur appelle la méthode par introspection. Avant de construire la méthode, il faut s'assurer qu'on a lu un retour à la ligne.
N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
Que la force de la puissance soit avec le courage de ta sagesse.
et une ouverture/fermeture par seconde, ce n'est pas catastrophique, sauf si le fichier est sur un réseau distant
Les contraintes de temps de développement ne me permettent pas d'élaborer un buffer actuellement. Si au moins c'était du JEE, je n'aurais aucun problème, mais ce "truc" est vraiment quick and dirty en J2SE. Pour être franc, si ça ne tenait qu'à moi, ça passerait illico par une base de données.
Donc le design propre et joli, je suis contraint d'oublier à mon plus grand désarroi.
Enfin, niveau perfs, je suis rassuré.
Mreci à vous
Partager