Bonjour,
Je dois travailler sur un ArrayList qui peut être lu et/ou mis à jour ds plusieurs thread. La documentation Microsoft propose plusieurs solutions.
Une première est de récupérer un "wrapper" avec ArrayList.Synchronized
et une autre de faire un lock(myList.SyncRoot) suivi d'un foreach.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 ArrayList myWrapper = ArrayList.Synchronized(myList) foreach((Object item in myWrapper){ }
J'ai ecrit le 1er exemple, est-il thread-safe? Si oui en quoi diffère-t-il du second (tiré de la doc Microsoft)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 ArrayList myCollection = new ArrayList(); lock(myCollection.SyncRoot) { foreach (Object item in myCollection) { // Insert your code here. } }
Le traitement pour chaque élément de la Collection est assez long, cela va-t-il ralentir de maniere significative le reste du programme?
Partager