2010-06-05 4 views

Répondre

1

oui. read section '3.1 Linearizability' l'opération pop suppose qu'une dequeue simultanée peut se produire. Cela signifie que plusieurs threads pourront consommer la file d'attente.

0

je ne sais pas la « file d'attente Fober » mais ont déjà écrit FIFOs sans verrouillage comme des tampons en anneau. Ce qui est possible relativement facilement est une file d'attente sans inter-verrous, ce qui signifie que les lecteurs ne bloquent pas les auteurs et vice versa, mais que plusieurs lecteurs doivent être sérialisés et que plusieurs lecteurs doivent l'être aussi. Donc ce n'est pas exactement sans verrou mais il n'y a pas encore de blocage/blocage entre les lecteurs et les écrivains. Peut-être qu'il existe des approches encore meilleures qui permettent encore moins de verrouillage, mais peut-être que cela vous aidera déjà.

1

Je n'ai pas lu le papier mais je fais une grande supposition ici: Le papier utilise la technique CAS (comparer et échanger) pour réaliser la concurrence.

Verrouiller libre ne signifie pas sans bloc. L'utilisation de CAS bloquera d'autres threads, mais au moins un thread se déplacera 'forward' à tout moment.

Plusieurs producteurs écrivent tous dans la même file d'attente - ce n'est pas un problème. La trickiness est les consommateurs multiples. Si chaque consommateur doit accéder aux données alors je l'implémenterais par plusieurs files d'attente et les données passeraient à la file d'attente suivante après avoir été traitées dans un. Si vous voulez dire plusieurs consommateurs via des threads alors cela fonctionnerait sur la méthode ci-dessus

Questions connexes