J'ai eu besoin de ce genre de chose pour un système de communication réseau dans un environnement multithread.
Dans mon cas, je viens d'encapsuler std :: queue avec un objet qui gérait le verrouillage (std :: queue n'est pas thread-safe, d'une manière générale). Les objets de la file n'étaient que des wrappers très légers sur les tableaux char * -style.
Ces enveloppes fournissaient également les fonctions de membre suivantes que je trouve extrêmement utiles.
insertByte(unsigned int location, char value)
insertWord(unsigned int location, int value)
insertLong(unsigned int location, long value)
getByte/Word/Long(unsigned int location)
Ces ont été particulièrement utiles dans ce contexte, puisque le mot et les valeurs longues devaient être byteswapped, et je pourrais isoler cette question à la classe qu'il a traité en fait à la fin. Il y avait des choses quelque peu étranges que nous faisions avec des morceaux "plus gros que 4 octets" des données binaires, ce que je pensais à l'époque nous empêcherait d'utiliser std :: vector, bien que ces jours-ci je voudrais juste l'utiliser et jouer avec & vecteur [x].
Y a-t-il une raison pour laquelle vous n'utilisez pas de flux? – TreDubZedd
Techniquement parlant non, mais je préfère ne pas impliquer le boost géant, que je suppose être ce que tu voulais dire? – monoceres
Ce n'est pas vraiment une réponse, mais avez-vous pensé à faire votre propre file d'attente pour gérer les données au lieu d'utiliser STL? –