1

Comme le titre l'indique, quelles sont les optimisations du compilateur, du CLR ou du CPU à prendre en compte lors de l'utilisation de threads et de la synchronisation non bloquante? J'ai lu un peu au sujet de la réorganisation des instructions pour améliorer l'efficacité qui pourrait casser des choses, et mettre en cache des optimisations qui se traduiront par des variables n'étant pas visibles aux autres threads tout de suite [0], mais y a-t-il d'autres que je dois savoir?Quelles sont les optimisations du compilateur, CLR ou CPU à prendre en compte lors de l'utilisation de threads et de la synchronisation non bloquante?

Tous les liens vers des lectures/blogs/articles/etc recommandés seront grandement appréciés.

Merci, Egil.

Mise à jour: Merci à lien Jons au blog de Joe Duffy J'ai trouvé beaucoup d'informations plus grande que je pensais que je voudrais partager avec vous les gars:

Répondre

1

Vous devez essentiellement connaître le modèle de mémoire .NET. Ignorer les optimisations actuellement effectuées - code pour le modèle.

Je recommanderais this blog post par Joe Duffy comme un bon point de départ.

Je vous recommande également que vous ne pas rouler votre propre code sans verrouillage. C'est tout simplement trop dur pour les mortels, OMI. Utilisez des frameworks comme Parallel Extensions (dans .NET 4.0) qui font le bon choix pour vous.

1

Joe Duffy a un excellent livre intitulé "Concurrent Programming on Windows" que je recommande vivement de lire si vous êtes intéressé par la concurrence sur Windows (y compris la programmation sans verrou).