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

C# Discussion :

Opération atomique sur un int référencé dans un tableau


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de _kal_
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2006
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2006
    Messages : 178
    Par défaut Opération atomique sur un int référencé dans un tableau
    Bonjour,

    D'après la spec C#, les opérations de lectures/écritures sont atomiques sur les int. Il n'est donc pas nécessaire de protéger cette instruction par un lock dans un environnement multi-thread :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cpt++; // cpt est une variable de type int.
    En revanche, si j'ai un table de int, est ce que l'opration suivante est thread safe ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    tab[i]++; // int pointé par le tableau à la ième position.
    Merci d'avance

    Kal

  2. #2
    Membre émérite

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2011
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 487
    Par défaut
    Zieute un coup d'oeil tout en bas dans le chapitre sur le thread safe : http://msdn.microsoft.com/fr-fr/libr...tem.array.aspx
    Mon blog sur les technos .NET et Agile -> http://blog.developpez.com/maximepalmisano/

  3. #3
    Membre confirmé Avatar de _kal_
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2006
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2006
    Messages : 178
    Par défaut
    Citation Envoyé par MaximePalmisano Voir le message
    Zieute un coup d'oeil tout en bas dans le chapitre sur le thread safe : http://msdn.microsoft.com/fr-fr/libr...tem.array.aspx
    Merci pour ta réponse.

    Si je comprend bien la doc, il faut que mon array soit static pour être thread-safe. C'est bien cela ?

  4. #4
    Membre émérite

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2011
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 487
    Par défaut
    Non ça garantit juste que les attributs statiques de l'array sont thread safe, mais ça on s'en tamponne un peu.

    Ca a l'air d'être ça qui t'interesse : http://msdn.microsoft.com/fr-fr/libr....syncroot.aspx
    Mon blog sur les technos .NET et Agile -> http://blog.developpez.com/maximepalmisano/

  5. #5
    Membre confirmé Avatar de _kal_
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2006
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2006
    Messages : 178
    Par défaut
    Citation Envoyé par MaximePalmisano Voir le message
    Non ça garantit juste que les attributs statiques de l'array sont thread safe, mais ça on s'en tamponne un peu.

    Ca a l'air d'être ça qui t'interesse : http://msdn.microsoft.com/fr-fr/libr....syncroot.aspx
    Ok, je ne peux donc pas échapper au lock, dommage.

    Merci pour tes réponses

  6. #6
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    269
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 269
    Par défaut
    Attention la spec indique les lectures/écritures sont atomique pas que l’incrémentation le soit.
    Pour réaliser une incrementation atomique il faut utiliser la classe Interlocked

Discussions similaires

  1. Opération sur des entiers codés dans un tableau
    Par Nurza dans le forum Langage
    Réponses: 7
    Dernier message: 28/09/2012, 12h57
  2. Mail Transfère par Domaine sur une même feuille dans un tableau
    Par meryn dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 08/04/2012, 12h49
  3. Agir sur des objets placés dans un tableau
    Par CyrilD dans le forum Général VBA
    Réponses: 2
    Dernier message: 27/03/2011, 22h06
  4. Réponses: 3
    Dernier message: 08/05/2010, 19h08
  5. [Tableaux] Copie d'un objet référencé dans un tableau
    Par Nullos Oracle dans le forum Langage
    Réponses: 5
    Dernier message: 12/07/2007, 21h42

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