ici Michel Fortin

Journal du samedi 18 juin 2011

Compteur de référence d’Objective-C

C’est intéressant d’observer la runtime Objective-C. J’ai souvent jeté un coup d’œil récemment pour donner naissance à D/Objective-C et j’ai trouvé quelques points intéressants. Par exemple, savez-vous où les compteurs de référence sont stockés ?

Ils sont partagés entre huit tables de hachage globales dans Core Foundation, chaque table étant protégée par un spin lock. La table est choisie en fonction de quelque bits dans l’adresse de l’objet… Sur iOS il n’y a qu’une seule table globale. J’imagine que ce stratagème est utilisé pour éviter la contention sur les machines multi-cœur.

Ça me surprend un peu par contre qu’ils ne stockent pas simplement le compteur dans une variable de l’objet. J’imagine qu’il y a un avantage à faire comme ils font, mais ça m’échappe.

Référence : Runtime.c dans le code de Core Foundation

Discussion et commentaires

Voyez aussi la discussion en anglais à propos de cette entrée.

La discussion pour cette entrée est maintenant fermée. Si vous avez quelque chose d'intéressant à dire, n'hésitez pas à me contacter pour m'en faire part.