我正在尝试确定swift Calendar结构是否是线程安全的。我发现NSCalendar类是" generally considered to be thread safe"。但我找不到Calendar结构的具体信息。
我的目标是使用日历扩展Date结构以用于扩展方法,例如昨天,明天等。我不想在每次调用时创建一个新的Calendar实例。
答案 0 :(得分:0)
Calendar
是NSCalendar
的替代品,实际上只是Apple平台上NSCalendar
的包装,所以如果NSCalendar
是线程的话 - 安全,我预计Calendar
也是如此。
答案 1 :(得分:0)
如果查看Calendar's source code,您将无法看到任何使其线程安全的代码。所以我认为不是,不同的主题会看到Calendar
对象字段的不同版本。
答案 2 :(得分:0)
否,它不是线程安全的(至少在Linux上运行时)。不知道达尔文的实现方式是否不同。 https://bugs.swift.org/browse/SR-11323
如果有人感到好奇,可以在这里进行实现:https://github.com/apple/swift-corelibs-foundation/blob/master/CoreFoundation/Locale.subproj/CFCalendar.c
在很多地方,“ calendar-> _ cal”(在并发调用之间共享)被修改并用作临时存储。