- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 4 NSThread 将 1000 个元素(例如整数元素)添加到数组中。如果添加一个对象需要 1 个时间单位,那么添加 1000 个对象将需要 1000 个时间单位。通过使用 4 个线程,我想将其减少到 250 个单元。如何使用 NSThreads 来实现这一点。谢谢
最佳答案
简短回答:您不能使用 NSThread
(或 GCD)实现此目的
更长的答案:Objective-C NSArray
类型不是线程安全的,不支持并发更新。虽然您可以将 NSArray
包装在线程安全的包装器中,以便它可以由多个线程安全地更新,但这样的包装器将通过序列化更新来实现这一目标 - 这样您就不会节省任何时间(并且实际上在那个线程安全包装器中花费了一些)。
也许您的意思有所不同:如果不是将项目添加到您希望重叠的数组中,而是在添加之前生成这些项目,那么您可以使用 NSThread
或GCD 提供您还将 NSArray
包装在线程安全的包装器中。
目前推荐的并发操作方式是使用 GCD,又名 Dispatch。如果您仔细阅读,您将了解如何使用串行队列和屏障操作使数组线程安全,以及如何使用并发队列运行 4 个任务。
HTH
关于ios - NSThread 用于并发操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55809105/
我有几个线程。我想运行它们以确保它们正在一个接一个地执行。[运行线程1];[运行线程2];当我这样做时,线程 2 正在运行,而无需等待线程 1 完成。我需要这个,因为我需要线程 1 中的值,以便在线程
NSThread 异步下载图片 在IOS中处理多线程有三个方案 , NSThread 、NSOperation 、GCD 。当然GCD应该是最方便的 ,我们一个一个学 。先理解底层的,最后再使用最方便
我正在创建一个新线程,它在每隔一段时间后运行我的一个方法。 现在我正在做的事情如下: NSThread *thread = [[NSThread alloc] initWithTarget:self
我正在开发一款游戏模拟游戏,希望加快比赛模拟速度。在给定日期,可能有 50 多场比赛需要模拟。目前,我循环遍历每个并告诉他们模拟自己,但这可能需要很长时间。我本来希望 1) 覆盖“忙碌”屏幕 2) 为
我有一个 iPhone 应用程序,在其中显示一个从 RSS 提要加载的表格 View 。当 View 加载时,我调用此方法在新的 NSThread 中运行: - (void)start:(NSURL*
是否可以在单独的线程中运行类方法(以“+”开头)?通常我调用像 [myClass myController]; 这样的方法,我尝试了 [NSThread detachNewThreadSelector
我正在使用 NSOperationQueue 来管理一个相当长的 iOS 应用程序阶段,所以我想异步管理它。在那个阶段,我通过直接使用 calloc 函数在 C 中分配大数组。“大”是指 1024x2
为什么我线程的 Retain count = 2?它在启动方法后增加,为什么? Retain 计数如何为 NSThreads 工作 @implementation ViewController - (
因为 NSThread 无法连接 我尝试了下一个方法,它似乎工作正常,但仍然是非常糟糕的解决方案还是足够好? // init thread NSThread *mythread = [[NSThrea
使用 4 NSThread 将 1000 个元素(例如整数元素)添加到数组中。如果添加一个对象需要 1 个时间单位,那么添加 1000 个对象将需要 1000 个时间单位。通过使用 4 个线程,我想将
我目前正在学习IOS Threading编程......我遇到了一个问题: 我的代码来了,请看一下: int main(int argc, const char * argv[]) { @au
这是我创建线程的方式: readFromWebThread = [[NSThread alloc] initWithTarget:self selector:@selector(loadThread:
我有一个触发线程的静态对象,但每当线程尝试执行选择器时,我都会收到“[NSThread initWithTarget:selector:object:]: target does not implem
我正在处理其他人的代码。我遇到了一行代码 [NSThread detachNewThreadSelector:@selector(myMethod) toTarget:self withObject:
我有很多 NSThreads,我想在它们工作的时候 sleep 。我该怎么做? iOS SDK 中是否有 WinApi 函数 WaitForSingleObject/WaitForMultipleOb
我有一个函数,当我的应用程序进入后台模式时它会被调用。如果用户重新打开应用程序,我想停止线程。到目前为止,我尝试的任何方法都不起作用。 到目前为止,这是我的代码: class Neversleep {
我从购买的媒体流 SDK 库中获得 C++ 回调,它在内部创建了多个线程。 具体来说,当库想要记录一条消息时,我会收到回调。有时我在某些 NSThread 的上下文中被调用,那里有一个自动释放池,但有
我正在使用这样的线程, [NSThread detachNewThreadSelector:@selector(myfunction) toTarget:self withObject 线程运行正常,
我想创建一个不是主线程的工作线程,这样我就可以调用 ... [self performSelector:@selector(doStuff) OnThread:self.myWorkerThread
我正在开发一个应用程序,它在读取 XML 文件时使用 NSThread 加载 viewControllers 的内容。 我是这样完成的: -(void)viewDidAppear:(BOOL)anim
我是一名优秀的程序员,十分优秀!