On est donc face à un probleme de partage de ressources (ici le
fichier "data"), de quelle manière peut on gérer cette affaire ?
On est donc face à un probleme de partage de ressources (ici le
fichier "data"), de quelle manière peut on gérer cette affaire ?
On est donc face à un probleme de partage de ressources (ici le
fichier "data"), de quelle manière peut on gérer cette affaire ?
J'ai une application qui remplit au fil du temps (cadencement
régulier) un fichier "data".
A certains moments prédéfinis, l'application doit exécuter des
fonctions pour exploiter des données que celle-ci a stockée dans
"data" tout en continuant de remplir "data" sans perturber la cadence.
J'ai donc pensé à un thread pour gérer une sorte de file d'attente.
Le point sensible est que ce thread devra, lui aussi, accèder au
fichier "data" (en lecture uniquement).
On est donc face à un probleme de partage de ressources (ici le
fichier "data"), de quelle manière peut on gérer cette affaire ?
J'ai une application qui remplit au fil du temps (cadencement
régulier) un fichier "data".
A certains moments prédéfinis, l'application doit exécuter des
fonctions pour exploiter des données que celle-ci a stockée dans
"data" tout en continuant de remplir "data" sans perturber la cadence.
J'ai donc pensé à un thread pour gérer une sorte de file d'attente.
Le point sensible est que ce thread devra, lui aussi, accèder au
fichier "data" (en lecture uniquement).
On est donc face à un probleme de partage de ressources (ici le
fichier "data"), de quelle manière peut on gérer cette affaire ?
J'ai une application qui remplit au fil du temps (cadencement
régulier) un fichier "data".
A certains moments prédéfinis, l'application doit exécuter des
fonctions pour exploiter des données que celle-ci a stockée dans
"data" tout en continuant de remplir "data" sans perturber la cadence.
J'ai donc pensé à un thread pour gérer une sorte de file d'attente.
Le point sensible est que ce thread devra, lui aussi, accèder au
fichier "data" (en lecture uniquement).
On est donc face à un probleme de partage de ressources (ici le
fichier "data"), de quelle manière peut on gérer cette affaire ?
Bonjour,
J'ai une application qui remplit au fil du temps (cadencement régulier) un
fichier "data".
A certains moments prédéfinis, l'application doit exécuter des fonctions
pour exploiter des données que celle-ci a stockée dans "data" tout en
continuant de remplir "data" sans perturber la cadence.
J'ai donc pensé à un thread pour gérer une sorte de file d'attente.
Le point sensible est que ce thread devra, lui aussi, accèder au fichier
"data" (en lecture uniquement).
On est donc face à un probleme de partage de ressources (ici le fichier
"data"), de quelle manière peut on gérer cette affaire ?
Bonjour,
J'ai une application qui remplit au fil du temps (cadencement régulier) un
fichier "data".
A certains moments prédéfinis, l'application doit exécuter des fonctions
pour exploiter des données que celle-ci a stockée dans "data" tout en
continuant de remplir "data" sans perturber la cadence.
J'ai donc pensé à un thread pour gérer une sorte de file d'attente.
Le point sensible est que ce thread devra, lui aussi, accèder au fichier
"data" (en lecture uniquement).
On est donc face à un probleme de partage de ressources (ici le fichier
"data"), de quelle manière peut on gérer cette affaire ?
Bonjour,
J'ai une application qui remplit au fil du temps (cadencement régulier) un
fichier "data".
A certains moments prédéfinis, l'application doit exécuter des fonctions
pour exploiter des données que celle-ci a stockée dans "data" tout en
continuant de remplir "data" sans perturber la cadence.
J'ai donc pensé à un thread pour gérer une sorte de file d'attente.
Le point sensible est que ce thread devra, lui aussi, accèder au fichier
"data" (en lecture uniquement).
On est donc face à un probleme de partage de ressources (ici le fichier
"data"), de quelle manière peut on gérer cette affaire ?
Donc il vaut mieux centraliser l'écriture et la lecture sur le même
handle de fichier dans un même thread et faire une boucle qui un coup
READ un coup WRITE les données... De plus, comme cela, c'est bien
plus facile de gérer la taille grossissante du fichier et ainsi de
mettre à jour la taille du fichier pour la lecture en temps réel.
De plus, comme cela, c'est bien plus facile de gérer
la taille grossissante du fichier et ainsi de mettre à
jour la taille du fichier pour la lecture en temps réel.
Donc il vaut mieux centraliser l'écriture et la lecture sur le même
handle de fichier dans un même thread et faire une boucle qui un coup
READ un coup WRITE les données... De plus, comme cela, c'est bien
plus facile de gérer la taille grossissante du fichier et ainsi de
mettre à jour la taille du fichier pour la lecture en temps réel.
De plus, comme cela, c'est bien plus facile de gérer
la taille grossissante du fichier et ainsi de mettre à
jour la taille du fichier pour la lecture en temps réel.
Donc il vaut mieux centraliser l'écriture et la lecture sur le même
handle de fichier dans un même thread et faire une boucle qui un coup
READ un coup WRITE les données... De plus, comme cela, c'est bien
plus facile de gérer la taille grossissante du fichier et ainsi de
mettre à jour la taille du fichier pour la lecture en temps réel.
De plus, comme cela, c'est bien plus facile de gérer
la taille grossissante du fichier et ainsi de mettre à
jour la taille du fichier pour la lecture en temps réel.
Vincent Burel wrote:
> Donc il vaut mieux centraliser l'écriture et la lecture sur le même
> handle de fichier dans un même thread et faire une boucle qui un coup
> READ un coup WRITE les données... De plus, comme cela, c'est bien
> plus facile de gérer la taille grossissante du fichier et ainsi de
> mettre à jour la taille du fichier pour la lecture en temps réel.
Bonjour,
Pas vraiment d'accord :-). Il est clairement indiqué que l'activité de
remplissage est critique: "sans perturber la cadence". Traiter les deux
activités dans une boucle signifie que l'activité d'écriture devient
tributaire de l'activité de lecture et du traitement qui en découle, ce
qui semble être ce que PurL veut justement éviter. C'est exactement ce
que je ne ferais pas dans ce cas. Les threads sont justement là pour
gérer ce genre de problème. Je suis tout à fait d'accord que l'emploi
inutile de threads ralentit le système pour rien mais dans ce cas
précis, c'est la bonne solution.
Si l'activité d'écriture n'est pas critique, le raisonnement change.
> De plus, comme cela, c'est bien plus facile de gérer
> la taille grossissante du fichier et ainsi de mettre à
> jour la taille du fichier pour la lecture en temps réel.
Là non plus, pas d'accord. Le fait d'utiliser 2 threads n'a pas d'impact
sur ce point. S'ils utilisent le même handle, les deux threads ont le
même accès aux informations.
Vincent Burel wrote:
> Donc il vaut mieux centraliser l'écriture et la lecture sur le même
> handle de fichier dans un même thread et faire une boucle qui un coup
> READ un coup WRITE les données... De plus, comme cela, c'est bien
> plus facile de gérer la taille grossissante du fichier et ainsi de
> mettre à jour la taille du fichier pour la lecture en temps réel.
Bonjour,
Pas vraiment d'accord :-). Il est clairement indiqué que l'activité de
remplissage est critique: "sans perturber la cadence". Traiter les deux
activités dans une boucle signifie que l'activité d'écriture devient
tributaire de l'activité de lecture et du traitement qui en découle, ce
qui semble être ce que PurL veut justement éviter. C'est exactement ce
que je ne ferais pas dans ce cas. Les threads sont justement là pour
gérer ce genre de problème. Je suis tout à fait d'accord que l'emploi
inutile de threads ralentit le système pour rien mais dans ce cas
précis, c'est la bonne solution.
Si l'activité d'écriture n'est pas critique, le raisonnement change.
> De plus, comme cela, c'est bien plus facile de gérer
> la taille grossissante du fichier et ainsi de mettre à
> jour la taille du fichier pour la lecture en temps réel.
Là non plus, pas d'accord. Le fait d'utiliser 2 threads n'a pas d'impact
sur ce point. S'ils utilisent le même handle, les deux threads ont le
même accès aux informations.
Vincent Burel wrote:
> Donc il vaut mieux centraliser l'écriture et la lecture sur le même
> handle de fichier dans un même thread et faire une boucle qui un coup
> READ un coup WRITE les données... De plus, comme cela, c'est bien
> plus facile de gérer la taille grossissante du fichier et ainsi de
> mettre à jour la taille du fichier pour la lecture en temps réel.
Bonjour,
Pas vraiment d'accord :-). Il est clairement indiqué que l'activité de
remplissage est critique: "sans perturber la cadence". Traiter les deux
activités dans une boucle signifie que l'activité d'écriture devient
tributaire de l'activité de lecture et du traitement qui en découle, ce
qui semble être ce que PurL veut justement éviter. C'est exactement ce
que je ne ferais pas dans ce cas. Les threads sont justement là pour
gérer ce genre de problème. Je suis tout à fait d'accord que l'emploi
inutile de threads ralentit le système pour rien mais dans ce cas
précis, c'est la bonne solution.
Si l'activité d'écriture n'est pas critique, le raisonnement change.
> De plus, comme cela, c'est bien plus facile de gérer
> la taille grossissante du fichier et ainsi de mettre à
> jour la taille du fichier pour la lecture en temps réel.
Là non plus, pas d'accord. Le fait d'utiliser 2 threads n'a pas d'impact
sur ce point. S'ils utilisent le même handle, les deux threads ont le
même accès aux informations.
- La séquence principale a terminé son écriture, elle quitte donc la
section critique.
- Le thread de lecture reprend son exécution MAIS pour un temps
inconnu
- La séquence principale doit, à nouveau écrire, dans le fichier
"data" MAIS le thread est encore dessus !
- La séquence principale a terminé son écriture, elle quitte donc la
section critique.
- Le thread de lecture reprend son exécution MAIS pour un temps
inconnu
- La séquence principale doit, à nouveau écrire, dans le fichier
"data" MAIS le thread est encore dessus !
- La séquence principale a terminé son écriture, elle quitte donc la
section critique.
- Le thread de lecture reprend son exécution MAIS pour un temps
inconnu
- La séquence principale doit, à nouveau écrire, dans le fichier
"data" MAIS le thread est encore dessus !
Re,
Tout d'abord, merci pour vos réponses.
Je me suis penché sur l'utilisation des sections critiques.
Cependant il peut y avoir un probleme :
- Ma séquence principale (celle qui remplit le fichier "data") entre en
section critique pour écrire ce qu'il faut.
- Imaginons qu'une fonction de traitement (celle qui lit dans le fichier
"data") soit lancée par thread. Celui-ci voit que le fichier "data" est
utilisé et donc attend.
- La séquence principale a terminé son écriture, elle quitte donc la
critique.
- Le thread de lecture reprend son exécution MAIS pour un temps inconnu
- La séquence principale doit, à nouveau écrire, dans le fichier "data"
le thread est encore dessus !
Il faudrait que, lorsque la séquence principale, à besoin, à nouveau
d'écrire que le thread (non prioritaire) cesse toute activité.
Alors comment faire ?
Re,
Tout d'abord, merci pour vos réponses.
Je me suis penché sur l'utilisation des sections critiques.
Cependant il peut y avoir un probleme :
- Ma séquence principale (celle qui remplit le fichier "data") entre en
section critique pour écrire ce qu'il faut.
- Imaginons qu'une fonction de traitement (celle qui lit dans le fichier
"data") soit lancée par thread. Celui-ci voit que le fichier "data" est
utilisé et donc attend.
- La séquence principale a terminé son écriture, elle quitte donc la
critique.
- Le thread de lecture reprend son exécution MAIS pour un temps inconnu
- La séquence principale doit, à nouveau écrire, dans le fichier "data"
le thread est encore dessus !
Il faudrait que, lorsque la séquence principale, à besoin, à nouveau
d'écrire que le thread (non prioritaire) cesse toute activité.
Alors comment faire ?
Re,
Tout d'abord, merci pour vos réponses.
Je me suis penché sur l'utilisation des sections critiques.
Cependant il peut y avoir un probleme :
- Ma séquence principale (celle qui remplit le fichier "data") entre en
section critique pour écrire ce qu'il faut.
- Imaginons qu'une fonction de traitement (celle qui lit dans le fichier
"data") soit lancée par thread. Celui-ci voit que le fichier "data" est
utilisé et donc attend.
- La séquence principale a terminé son écriture, elle quitte donc la
critique.
- Le thread de lecture reprend son exécution MAIS pour un temps inconnu
- La séquence principale doit, à nouveau écrire, dans le fichier "data"
le thread est encore dessus !
Il faudrait que, lorsque la séquence principale, à besoin, à nouveau
d'écrire que le thread (non prioritaire) cesse toute activité.
Alors comment faire ?
le flux, c'est mon job, si je te dis que c'est plus facile avec un
seul thread, c'est que c'est plus facile avec un seul thread, et tu
aura énormément de mal à démontrer que c'est plus facile avec deux
thread. D'accord ! ? :-)
le flux, c'est mon job, si je te dis que c'est plus facile avec un
seul thread, c'est que c'est plus facile avec un seul thread, et tu
aura énormément de mal à démontrer que c'est plus facile avec deux
thread. D'accord ! ? :-)
le flux, c'est mon job, si je te dis que c'est plus facile avec un
seul thread, c'est que c'est plus facile avec un seul thread, et tu
aura énormément de mal à démontrer que c'est plus facile avec deux
thread. D'accord ! ? :-)