Dans l'un de mes programmes, il existe plusieurs clients et chaque client possède son propre tampon. Dans une boucle infinie, je vérifie si le client a des données à écrire sur le disque. Si c'est le cas, alors je fais la même chose et continue.C: Y a-t-il quelque chose de mieux qu'une implémentation FIFO Queue pour cette exigence?
Maintenant, parce que le client écrit des données qui ne sont pas vraiment sous mon contrôle (résultat de certains calculs), j'ai besoin d'un tampon dynamique. Donc le pseudo code ressemblerait à ceci:
//If data is ready
//Append(client_id, line)
void Append(int client_id, char *line) {
if(client_id.buffer == NULL) {
buffer = (char*)malloc(BUFFERSIZE * sizeof(char));
//Copy line into buffer
} else {
//Realloc the buffer if insufficient space and append this
//line to the existing buffer
}
}
ou l'autre approche serait d'utiliser une simple file d'attente de messages. Je continuerais à ajouter n'importe quels messages (chaînes) à une file d'attente existante et puis les lirais. Y a-t-il une autre meilleure approche?
Cela me semble un parfait cas d'utilisation pour une file d'attente thread-safe. –
Merci .. J'étais sur le point d'y aller mais mon code tel qu'il est maintenant est assez simple ... Il n'y a pas de discussions pour le moment. – Legend