2010-11-05 9 views
4

Je suis tombé sur this question et j'étais curieux de savoir dans quelles situations de la vie réelle vous voudriez réellement utiliser une pile de plusieurs threads, par opposition à une file d'attente FIFO, ou une file d'attente prioritaire. Il me semble très contre-intuitif que la propriété LIFO soit toujours appropriée lorsqu'elle est utilisée sur plusieurs threads. Vous n'auriez vraiment aucune garantie sur ce que vous obtenez de la pile, à part les trucs qui ont été mis là récemment. Cela n'aurait-il pas tendance à affamer les vieilles choses dans la pile/file d'attente?Quand voudriez-vous utiliser une pile thread-safe?

Répondre

2

Je peux concevoir que cela pourrait être utile dans une situation où la réponse au travail le plus récemment arrivé a été jugée plus utile. Une sorte de modèle d'interruption «haute priorité», avec des éléments plus anciens à examiner et à traiter dans le temps.

Je peux imaginer mettre en œuvre un bot de collecte de réputation Stack Overflow qui fonctionnerait de cette façon. L'entrée monothread introduit un flux de nouvelles questions sur une pile - un pool de threads surgit et répond rapidement aux plus récents, examine et répond aux questions plus anciennes s'il n'a pas déjà une réponse acceptée et pas plus d'opportunités via de nouvelles questions.