gpt4 book ai didi

objective-c - NSMutableString 线程安全?

转载 作者:行者123 更新时间:2023-12-03 12:56:09 27 4
gpt4 key购买 nike

我有一个很大的 NSMutableString(可能有数百兆字节),需要对其执行大量 rangeOfCharacterFromSet: 操作。

为了提高性能,我想让一个 NSOperationQueue 将字符串拆分为约 100kb 的 block 并异步处理每个 block 。

但是因为字符串太大,为每个线程制作不可变的副本是不可行的。

假设我不允许修改字符串(我打算阻塞主线程直到操作队列完成),这样安全吗?

Apple 将 NSString 记录为线程安全的,所有不可变对象(immutable对象)“通常”不是线程安全的,但大概只适用于某些方法? rangeOfCharacterFromSet 是我唯一使用的。

此代码将在 OS X 和 iOS 上运行(通常在 iOS 上使用较小的字符串)

最佳答案

虽然我怀疑 NSMutableString (或至少其常见实现)对此是安全的,但最安全的答案可能是创建一个不可变副本,然后针对它执行所有操作。

我的谨慎是因为非常大的 NSMutableStrings 可能在内部实现为树,如果该树在读取时进行延迟重新平衡,则可能存在线程安全问题。

关于objective-c - NSMutableString 线程安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16369329/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com