2010-11-30 7 views
2

J'ai un objet List dans ma classe et deux méthodes qui sont utilisées pour ajouter et supprimer des éléments de la liste.
Plusieurs threads tentent d'accéder à la liste.Comment bloquer et informer les threads

  1. Je souhaite m'assurer qu'un seul thread met à jour la liste au niveau d'une instance.
  2. Si une liste est vide et qu'un thread veut supprimer un élément, je veux que le thread attende jusqu'à ce qu'il y ait un élément dans la liste.
  3. Lorsqu'un élément est inséré dans la liste je veux informer les autres fils qui attendent d'accéder à la liste que la liste n'est pas vide plus et ils peuvent supprimer les éléments (à l'aide d'événements).

Quel est le meilleur mécanisme pour atteindre cet objectif?

Répondre

2

Il s'agit d'un modèle producteur/consommateur multithread. Jetez un oeil à this question.

1

L'objet ReaderWriterLock convient parfaitement - permet des lectures parallèles mais bloque tous les autres threads pendant qu'un thread écrit dans la collection.