J'essaie de déterminer si la structure Swift Calendar est thread-safe. J'ai trouvé que la classe NSCalendar est "généralement considéré pour être thread-safe ". Mais je ne trouve pas d'informations spécifiques pour la structure du calendrier.

Mon objectif est d'étendre la structure Date avec un calendrier à utiliser avec des méthodes d'extension telles que hier, demain, etc. Je ne veux pas créer une nouvelle instance de calendrier à chaque appel.

0
3Stone 30 août 2017 à 00:29

3 réponses

Meilleure réponse

Calendar est censé remplacer NSCalendar, et en fait n'est qu'un wrapper autour de NSCalendar sur les plates-formes Apple, donc si NSCalendar est thread-safe, J'imagine que Calendar l'est aussi.

0
Charles Srstka 29 août 2017 à 21:53

Non, ce n'est pas thread-safe (du moins lors de l'exécution sous Linux). Je ne sais pas si la mise en œuvre de Darwin est différente. https://bugs.swift.org/browse/SR-11323

Si quelqu'un est curieux, la mise en œuvre est ici: https://github.com/apple/swift-corelibs-foundation/blob/master/CoreFoundation/Locale.subproj/CFCalendar.c

Il y a beaucoup d'endroits où «calendrier -> _ cal» (qui est partagé entre les appels simultanés) est modifié et utilisé comme stockage temporaire.

0
Andrey Ulanov 20 août 2019 à 18:34