很多从其他平台转换过OC的开发者都习惯从线程的角度思考问题.IOS提供封装良好的类支持直接和线程的交互,尤其是NSthread类.但是apple建议使用用操作为中心的多任务.操作就是比线程更强大的抽象,如果可以争取使用的话,可以的到更好更快的代码,线程的创建和维护成本都很高,所以设计使用线程的软件一般都会引入少量的长期存在的线程.,当需要访问大象的如数输出,那就意味着加锁.加锁代价是昂贵的,可能还会导致更多的BUG.
当从operations中移除所有操作,确保所有挂起的操作都不会更新UI. NSoperationQueue尝试管理生成线程数,当NSoperationQueue同时调度太多操作,虽然实现了并发的思想,但效率却不是最高,如果明确告诉NSoperationQueue 不要调度超过CPU的数量的计算操作,那么简单的代码就会跑的更快, 把maxconcurrentOperationsCount 设置为CPU 的核心数.从而达到最高效的性能. 确定CPU 的核心数?
unsigned int ncpu;
size_t len = sizeof(ncpu);
sysctlbyname("hw.ncpu",&ncpu,&len,NULL, 0 );
NSLog(@"****%d",ncpu);