Je construis un éditeur de glisser-déposer basé sur un nœud, où chaque nœud représente une action (par exemple, lire ce fichier, ou trier ces données, etc.) Les sorties et les entrées des nœuds peuvent être connecté.Stratégies pour la parallélisation automatique
L'une des fonctionnalités que je voudrais mettre en œuvre est automatic parallelization, de sorte que si un chemin bifurque je peux automatiquement commencer un thread pour gérer chaque branche. Je suis préoccupé par quelques problèmes, cependant:
- Si un chemin bifurque, mais se joint plus tard revenir ensemble, je aurai besoin de les synchroniser en quelque sorte
- Si plusieurs start-noeuds (où l'exécution commence), leurs chemins devront être gérés séparément, puis peut-être dynamiquement rejoint/fusionné
- Je veux limiter le nombre de threads sont créés pour que je n'ai pas soudainement 20 fils dans l'impasse
Essentiellement, je aimerais savoir si des stratégies pour faire quelque chose comme ça ex ist (ne cherche pas nécessairement le code; juste la théorie). Des algorithmes d'ordonnancement pourraient-ils aider?
Merci pour votre conseils! J'ai hâte d'entendre vos suggestions.
Note: J'utilise C# 3.5, donc aucune des capacités amusantes de tâches parallèles n'est disponible pour moi. Si nécessaire, je vais passer à C# 4.0, mais je voudrais éviter cela.
+1 Vous pouvez également contrôler le nombre de threads que vous voulez utiliser en écrivant votre propre TaskScheduler et il y a beaucoup d'autres points d'extension de la bibliothèque. –
Merci pour ce dtb et Hightechrider, on dirait que ce sera très utile –