2013-02-19 2 views
0

J'implémente certaines fonctions dans lesquelles je reçois un ensemble de requêtes sur la base de données On ne devrait pas perdre la requête pendant un certain temps disons 5min à moins et jusqu'à ce que la requête est bien exécutée (ceci est le cas DB est en panne, nous ne perdons pas la requête). donc, ce que je pensais faire est de mettre une sorte de minuterie pour chaque requête à travers un thread différent et attendez-le pour ce laps de temps, et à la fin si elle existe toujours, retirez-le de la file d'attente, mais, je suis pas content de cette solution car je dois créer autant de threads que le nombre de requêtes. Y at-il une meilleure façon de concevoir cela (l'environnement est vC++), Si la question n'est pas claire, s'il vous plaît faites le moi savoir, je vais essayer de mieux encadrer.Conception d'une fonctionnalité de minuterie dans VC++

+0

Ainsi, vous voulez ajouter une fonctionnalité de temporisation à une requête, cependant, votre méthode actuelle, qui consiste à générer un nouveau thread par requête, votre insatisfait, pour clarifier? –

+0

Pourquoi avez-vous besoin d'un thread séparé pour chaque minuteur? Juste stocker le temps maintenant + 5 min. –

+0

@Luke: Oui, je place actuellement toutes les requêtes dans une file d'attente et les supprimera dans 2 cas. 1. si la requête est exécutée avec succès 2. Si le délai d'attente arrive sur le thread. – user2063770

Répondre

0

Un thread est suffisant pour vérifier permet de dire toutes les 10 secondes que vous n'avez pas de requêtes dans votre file d'attente dont le temps a été atteint et doit donc être annulé/annulé.

Les files d'attente sont généralement générées à partir d'une extrémité et effacées de l'autre extrémité, vous devez donc vérifier uniquement si la requête à l'extrémité où se trouvent les éléments les plus anciens n'a pas atteint son heure normale.

Questions connexes