J'ai une liste d'objets, pour chaque objet que je veux exécuter un thread totalement séparé (thread safty), comme .... Je vais choisir un objet de ma liste dans while loop et exécuter un thread puis pour l'objet suivant, exécutez les threads suivants ... tous les threads doivent être synchronisés de sorte que les ressources (valeurs/connexion (close/open)) partagées par eux ne doivent pas changer .....Synchronisation de thread
Répondre
Commencer un fil per objet n'est pas nécessairement sage; vous devriez probablement avoir un petit nombre de threads de travail choisissant des éléments de la liste (ou mieux, un Queue<T>
), synchronisant l'accès à cette liste/file d'attente. Un exemple de file d'attente thread-safe peut être trouvé dans this thread.
Une fois que a un élément de travail, il n'y a pas de solution miracle pour rendre le reste du code que vous écrivez (pour le traiter) thread-safe. Une approche raisonnable qui garde les choses simples est l'immuabilité - soit l'immuabilité réelle (les éléments ne peuvent pas changer), soit simplement ne change pas l'objet. Vous pouvez bien sûr implémenter le verrouillage autour de l'élément de travail, mais cela ne sert qu'à tous votre code utilise la même stratégie de verrouillage, ce qui est difficile à appliquer.
je vais choisir un objet de ma liste dans while et exécuter un fil et alors pour objet suivant exécuter les prochaines discussions
Si je voulais vraiment un fil par objet, Je ne serais probablement pas, je créerais une classe comme ceci:
class ObjectProcessingThread
{
Thread processingThread = new Thread();
public TargetObject { get; set;}
public Start()
{
//start the processing thread with threadEntryPoint as the work the thread will do
}
private threadEntryPoint
{
//do stuff with targetObject
}
}
puis dans la boucle while nouvelle jusqu'à un ObjectProcessingThread pour chaque objet, la mise en sa propriété TargetObject, puis Callin g Commencez.
tous les fils doivent être synchronisés tels que les ressources (valeurs/connexion (fermeture/ouverture)) partagée par les devrait pas changer .....
Si vous ne voulez pas les valeurs à changer, ne les changez pas.
- 1. Java Multi problème de synchronisation de thread?
- 2. Synchronisation de thread avec boost :: condition_variable
- 3. iPhone SDK - Barre de recherche Synchronisation de thread Question
- 4. fcntl() pour la synchronisation de thread ou de processus?
- 5. Java - Synchronisation de thread dans une application Web
- 6. Qu'est-ce que la synchronisation de thread dans Java?
- 7. Jeux de synchronisation Java: synchronisation && wait && notifier
- 8. Boost Synchronisation de fil
- 9. Modèle correct pour la synchronisation multi-thread? (C#)
- 10. synchronisation de threads
- 11. Exception de synchronisation
- 12. Synchronisation de sémaphore
- 13. Synchronisation de thread de contexte d'objet géré de données de base
- 14. primitive de synchronisation pour léger file d'attente de thread de travail
- 15. Synchronisation de deux threads
- 16. Est-ce thread de code et de synchronisation en toute sécurité?
- 17. Instructions de synchronisation C++
- 18. Définition de l'objet de synchronisation dans WPF
- 19. Combien coûte la synchronisation?
- 20. Event Handlers synchronisation
- 21. aide de synchronisation en Java
- 22. C# synchronisation
- 23. Synchronisation de SortedDictionary.iteri avec readlock et writelock
- 24. Problèmes de synchronisation: tout semble correct, mais
- 25. Multithreading - Synchronisation sous Unix
- 26. Meilleure stratégie de synchronisation
- 27. Synchronisation de réseau MPI
- 28. Synchronisation de deux BindingSources
- 29. Problème de synchronisation Java
- 30. Synchronisation de table MySQL
Y a-t-il une question? –