IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

bug avec parallel.for


Sujet :

VB.NET

  1. #1
    Membre émérite

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Par défaut bug avec parallel.for
    Bonjour

    J'ai écrit ce bout de code mais j'obtiens une exception index is outside the bound of the array

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      Parallel.For(0, 1000, Sub(i)
                                      For j As Int64 = 0 To i
                                          list.Add(i + j)   'l'erreur pointe sur cette ligne
                                      Next
     
                                  End Sub)
    merci

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 193
    Par défaut
    on ne peut pas tout faire en parallèle

    ce n'est possible qu'avec des classes qu'on appelle thread safe, c'est à dire que les membres peuvent être appelés simultanément depuis plusieurs threads
    les 3/4 des classes du framework ne sont pas thread safe (c'est précisé dans msdn en haut ou en bas de la page de chaque classe si c'est threads safe ou pas)
    on peut en recoder des threads safes si nécessaire, mais ici ca perdrait plus de temps de synchroniser les threads que ca n'en gagnerait
    parce qu'il y aussi une question d'utilité dans le multi threading, .add dans un list est quelque chose de plus que rapide, donc le paralléliser ne sert à rien
    ca devient utile quand c'est des tâches assez longues (plusieurs ms, là on est dans l'ordre de la nanoseconde), ou des instances séparées

    le principe du thread safe c'est d'utiliser des lock (synclock, readerwriterlockslim ...) pour empecher que des choses qui ne devrait pas être faites en même temps ne le soit, en faisant attendre des threads pour que la ressource soit dispo, donc c'est une perte de temps potentielle
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre émérite

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Par défaut
    Merci pour les expliquations

    mais ici ca perdrait plus de temps de synchroniser les threads que ca n'en gagnerait
    parce qu'il y aussi une question d'utilité dans le multi threading, .add dans un list est quelque chose de plus que rapide, donc le paralléliser ne sert à rien

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Soucis avec parallel.for
    Par waldi084 dans le forum C#
    Réponses: 3
    Dernier message: 23/02/2015, 10h30
  2. Bug avec le test de profondeur
    Par Tellmarch dans le forum OpenGL
    Réponses: 1
    Dernier message: 17/10/2004, 00h59
  3. Bug avec requete
    Par arsgunner dans le forum ASP
    Réponses: 8
    Dernier message: 14/06/2004, 16h25
  4. [C#] Bug (?) avec la propriété TransparencyKey de la Form
    Par FrigoAcide dans le forum Windows Forms
    Réponses: 5
    Dernier message: 21/05/2004, 14h14
  5. [CR9] Bug avec les champs à valeur vide ?
    Par Djob dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 15/07/2003, 21h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo