2009-06-23 6 views
-4

Pouvez-vous donner un exemple dans lequel la structure de données de file d'attente peut être particulièrement utilePouvez-vous donner un exemple dans lequel la structure de données de file d'attente peut être particulièrement utile

+4

Comme c'est la troisième question d'affilée affiche de ce type, j'ai une susposion furtive c'est devoirs. – CAbbott

+0

@ CAbbott {GRIN} –

+0

IMHO le problème n'est pas que ce soit des devoirs ou non. Le problème est que la question est une décharge. –

Répondre

6

Les files d'attente sont généralement utilisées pour les applications de planification et de gestion des requêtes. Par exemple, si vous avez un processus qui crée des demandes et un autre processus qui gère les demandes, vous utiliserez une file d'attente pour contenir les demandes. Par exemple:

Normalement, une file d'attente est dans l'ordre FIFO - les requêtes sont traitées dans l'ordre où elles sont reçues, mais elles peuvent aussi être commandées d'une autre manière (une file d'attente prioritaire par exemple).

Quelques exemples:

  1. Un fils de planification du système d'exploitation pour l'exécution sur un processeur utilisent une file d'attente pour déterminer quel fil est le suivant à exécuter. Un serveur Web gérant des requêtes HTTP utiliserait une file d'attente pour transmettre des requêtes à des threads qui vont effectivement mettre en place les pages Web.

  2. Une imprimante gère les demandes d'impression.

0

Dans le cas où vous avez besoin pour traiter les demandes dans l'ordre où ils sont reçu vous utiliseriez une file d'attente. Ou une structure de type FIFO ... first in first out ... qui préserve l'ordre de requête. Pour aller plus loin, vous pouvez utiliser une file d'attente hors ligne similaire à MSMQ afin de déconnecter la requête du preneur de requête réel. Supposons que vous ayez un site Web qui doit envoyer des courriels. C'est un endroit parfait pour une file d'attente où le site Web stashes la demande dans la file d'attente pour un processeur hors ligne de sorte que le site Web n'est pas directement lié au serveur SMTP qui est nécessaire pour traiter le courrier. Cela libère ensuite le thread de travail sur le site Web pour traiter les demandes Web.

0

Dans certains cas, les éléments peuvent être poussés et retirés (de manière sûre) des structures de file d'attente par plusieurs threads. Par exemple, disons que vous voulez seulement 5 connexions simultanées à un processeur de carte de crédit. 5 threads peuvent être démarrés et vérifier (en attente) que les éléments apparaissent dans la file d'attente. Les demandes de traitement des cartes de crédit sont placées dans cette structure de file d'attente par d'autres threads qui seront traitées dès que possible. (Il y a beaucoup d'autres considérations, comme l'attente d'une réponse, la sécurité des threads, la concurrence, le verrouillage, l'humeur du développeur, la phase de la lune ...)

Questions connexes