Quel serait un exemple du monde réel de l'utilisation d'une barrière dans une application multithread?

StackOverflow https://stackoverflow.com/questions/1837283

  •  11-09-2019
  •  | 
  •  

Question

paquet d'accès simultané de JDK, la bibliothèque de fil de Boost, la bibliothèque de threads de Perl (pas en Python bien) tout mettre en œuvre barrière, je ne suis pas venu sur un besoin d'utiliser une barrière, se demandant si ce serait un cas d'utilisation typique dans multithread applications.

Était-ce utile?

La solution

Les obstacles peuvent être utilisés dans tous les sens à travers des exemples artificiels mais vous souvent les semblent dans une dispersion / réduire la méthode où les résultats des différents sujets sont tous nécessaires avant de poursuivre.

Si vous vouliez paralléliser une sorte par exemple, vous pouvez diviser la liste n fois et commencer à n threads pour trier leur section et une pause, quand ils sont tous ont terminé, ils mourraient en laissant le parent savoir qu'il est enfin correct de combiner les morceaux triés. (Je sais qu'il ya de meilleures façons, mais il est une mise en œuvre).

L'autre endroit que je l'ai vu est en réseau parallélisée où vous Vous pour envoyer une certaine quantité de données par charge utile. Ainsi, l'interface se met en marche des seaux n et attendez tous pour remplir avant d'envoyer la transmission. Quand vous pensez à une ligne T1 partitionné fait sorta sens, l'envoi d'une rafale de données sur les 64 partitions multiplexés serait mieux que d'envoyer les données de 1 partition (qui coûte sensiblement le même puisque le paquet doit être rembourré avec des 0).

Hope ce sont des choses à vous faire réfléchir à ce problème!

Autres conseils

Exemple: un ensemble de fils de travailler simultanément pour calculer est nécessaire comme entrée pour l'étape suivante de traitement à un / tout un jeu de résultats et ledit jeu de résultats (en partie / total) des fils à la "barrière".

Une barrière rend plus facile de synchroniser plusieurs threads sans avoir à concevoir une solution autour multiple conditions & mutexes.

Je ne peux pas dire que je l'ai vu souvent barriers bien. À un certain moment, le nombre de fils grandit, il pourrait être utile d'envisager un système plus « découplés » pour gérer des impasses possibles.

MSDN: A Barrieris un objet qui empêche des tâches individuelles dans un fonctionnement en parallèle de continuer jusqu'à ce que toutes les tâches atteignent la barrière. Il est utile lors d'une opération parallèle se produit dans phases et chaque phase nécessite une synchronisation entre les tâches.

trouvés ici

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top