Implémentation des lecteurs/écrivains [résolu] - C++ - Programmation
Marsh Posté le 12-08-2010 à 11:47:51
Si j'ai bien compris le code ,est ce que tu ne devrai pas prendre le lock juste au moment de l'ecriture pour l'ecrivain ? Là , j'ai l'impression qu'il bloque la file meme lorsqu'il fait son calcul
un truc du genre : ( surement faux, je ne connais aps le C++ )
Code :
|
Marsh Posté le 12-08-2010 à 12:04:02
Oui tu as raison, je viens de voir ça ! Merci !
Marsh Posté le 12-08-2010 à 13:12:11
a noter que le lecteur a le même problème, il bloque la file tant que la file est vide et que l'ecrivain bloque la file tant que la file est pleine
Marsh Posté le 12-08-2010 à 14:39:59
Oui oui j'avais bien noté !
Marsh Posté le 12-08-2010 à 11:41:54
Hello,
J'ai un cas de lecteur/écrivain, et j'ai du mal à l'implémenter comme je le souhaite.
Mon écrivain produit des données moins vite que ce que lit mon lecteur, j'ai donc mis en place une file qui stocke les résultats de l'écrivain, et je fais démarrer l'écrivain plus tôt pour qu'il prenne de l'avance sur le lecteur.
Mon problème est que le lecteur lit au rythme de l'écrivain, et non pas à son propre rythme.
Voici le code exemple :
En sortie j'ai quelque chose comme ça :
++writer starts
++writer: [1] = 79
++writer: [2] = 28
++writer: [3] = 74
++writer: [4] = 5
++writer: [5] = 81
++writer: [6] = 26
++writer: [7] = 32
--reader starts
++writer: [8] = 55
--reader: [7] = 79
++writer: [8] = 19
--reader: [7] = 28
++writer: [8] = 52
--reader: [7] = 74
++writer: [8] = 74
--reader: [7] = 5
++writer: [8] = 13
--reader: [7] = 81
++writer: [8] = 93
--reader: [7] = 26
++writer: [8] = 70
--reader: [7] = 32
++writer: [8] = 36
--reader: [7] = 55
++writer: [8] = 83
--reader: [7] = 19
++writer: [8] = 67
--reader: [7] = 52
++writer: [8] = 48
--reader: [7] = 74
++writer: [8] = 82
--reader: [7] = 13
++writer: [8] = 61
--reader: [7] = 93
...
Comme on le voit, la file est toujours pratiquement pleine, alors que je voudrais que celle-ci se vide.
En gros je veux que le lecteur ait ce qu'il désire dès qu'il le demande.
Savez-vous comment faire ce genre de chose ?
Message édité par Riot le 12-08-2010 à 12:04:21
---------------
Be the one with the flames.