THREADSAFE GENERIC SORTEDLIST

sashka_shurik Messages postés 4 Date d'inscription samedi 15 avril 2006 Statut Membre Dernière intervention 9 avril 2007 - 6 sept. 2006 à 15:06
sashka_shurik Messages postés 4 Date d'inscription samedi 15 avril 2006 Statut Membre Dernière intervention 9 avril 2007 - 7 sept. 2006 à 14:47
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/39339-threadsafe-generic-sortedlist

sashka_shurik Messages postés 4 Date d'inscription samedi 15 avril 2006 Statut Membre Dernière intervention 9 avril 2007
7 sept. 2006 à 14:47
J'ai envoye un message a ta boite.

Pour les lecteurs interesses dans le suhet une question:
Si on appelle StartRead() quand on cree ou execute le premier fois le IEnumerator et apres quelque iteration le foreach() termine sans arriver a la fin de sequence, peut on verifier que le foreach vient de terminer? peut on verifier si la reference cree par foreach en question est toujours accessible ?

De ma part la seule solution envisageable est d'avoir un liste interne de "weak references" dans le class que vont retracer la creation de tout IEnumerator et qui vont aider a verifier si un "strong reference" existe qq ailleur dans le code chaque fois que un write est applee.
cs_Dargos Messages postés 13 Date d'inscription mardi 18 avril 2006 Statut Membre Dernière intervention 27 mars 2008
7 sept. 2006 à 12:37
sashka_shurik :
>Tu peux implementer ton propre IEnumerator qui serait l'enfant de IEnumerator de C# et qui aurait tout le code necessaire pour la protection thread.
>la migration d'un class generique vers le tien(et vise versa) se ferrait facilement.

effectivement !
mais la, je ne sais comment faire : dans le foreach, il y a un appel au IEnumerator a chaque boucle. d'où le fait que je bloques au debut du foreach, et que je libere à la fin...
peux tu m'en dire plus sur ceci ? (implementer ton propre IEnumerator)
en tout cas merci pour ce bon commentaire :)
sashka_shurik Messages postés 4 Date d'inscription samedi 15 avril 2006 Statut Membre Dernière intervention 9 avril 2007
6 sept. 2006 à 15:06
Tres interessant :-) comme code
Suggestion(s):
Dans la fonction "public TValue this[TKey Key]" dans le "set" et le "get" tu peut aussi verifier pour lecture et/ou ecriture.
Tu peux implementer ton propre IEnumerator qui serait l'enfant de IEnumerator de C# et qui aurait tout le code necessaire pour la protection thread.
Si ces deux choses sont fait. Tu peut rendre StartRead et EndRead prives et donc le class serait tout a fait le meme que le generique SortedList de point de vue utilisateur. De plus, la migration d'un class generique vers le tien(et vise versa) se ferrait facilement.
Autrement, une super bonne idee :-) je vais peut etre l'utiliser dans mon projet:-)