有没有办法在Objective-C中以原子方式运行代码?

时间:2012-12-18 11:43:01

标签: objective-c multithreading atomic

我正在尝试优化一段代码,从硬盘驱动器加载大量图像并对其进行一些计算。我第一次加快速度的尝试是创建一个NSOperationQueue加载并为每个图像单独NSOperations进行计算。

不幸的是,这并没有缩短所花费的时间。

一个原因可能是创建NSOperations并将其添加到queue所导致的开销。另一个可能的原因是硬盘驱动器不是为多线程工作而设计的,因此磁盘的标头不需要逐个读取文件,而是需要在扇区之间来回跳转。

所以我的问题是,如果有任何方法可以原子地运行 obj-C C 代码,那么当一个NSOperation读取文件时尝试阅读另一个文件的某些操作不会打扰,但是所有NSOperations仍可以对其图像进行计算吗?

2 个答案:

答案 0 :(得分:2)

为什么不简单地使用 GCD (Grand Central Dispatch)并忘记显式线程?

Here是一个很好的Apple指南

答案 1 :(得分:0)

看一下NSLock课程。它允许您实现关键部分。