iPhone将具有支持不同类型多线程API的能力,这些API包括:POSIX线程,NSObject,NSThread和NSOperation.

iPhone操作系统是一个真正的抢占式,多任务操作系统,允许开发人员创建多线程应用。

拿着一个iPhone时,我手中实际是 一个配备Unix操作系统的抢占式,多任务计算机,它有一个图形界面,并提供GPS功以,Wi-Fi以及大量内置的函数库,另外这也是一个手机 ,这实在令人惊叹,真是了不起!

线程或执行线程是计算机程序中一个分支,会引发两个或多个并发运行的任务。线程包含在计算机程序中

基本来说,如果应用在完成一个或多个任务的同时还需要保证对用户的响应性,就应当对应用使用多线程。

多线程是指,操作系统控制多个进程共享CPU时间并等待它们的时间片到来,以达成多个任务同时运行的效果。操作系统会让CPU为一个进程服务几毫秒,然后要求这个进程进入休眠状态,而让CPU为其他进程提供服务。

进程就是正在运行的应用

如果多个线程试图访问资源并同时完成读和写操作,资源的值可能不正确,而且很可能被破坏。例如,假设两个线程分别表示一个游戏应用中的两个角色,且这两个线程同时运行。同步是指保持数据一致或者维护线程之间数据的完整性。如果一个线程试图读取gameScroe变量,而另一个线程试图更新gameScore变量,gameScore变量就可能不正确。

临界区是一段代码,可以保护共享资源,防止多个线程同时访问这段代码而破坏共享资源。

存在某些条件时,线程访问资源的时间顺序可能导致出乎意料的结果。这种情况通常称为一种竞态条件。

在多线程中互斥锁用来避免同时使用一个公共资源。很多著名的竞态条件例子就曾导致灾难性的后果。

两个或多个线程永远阻塞,互相等待对方释放各自独特持有的资源时,则会出现线程应用中另一个常见的陷阱。这称为一个死锁条件。

启动一个线程时,实际上会脱离Cocoa框架。此时,要由我们来负责清理内存池。如果没有这样做,就会出现内存泄漏。

运行循环,会处理你用来调度工作的事件差协调到来事件的接收,其作用是在有工作时保持线程的繁忙状态,而在没有任何工作时置线程为休眠模式。要了解有关运行循环的更多信息。

参考资料:《精彩iPhone炫酷开发-七位一线高手的编程和设计范例》

 

【读书笔记】iOS-“一心多用”利用多线程提升性能的更多相关文章

  1. 读书笔记-iOS核心动画高级技巧

    如果不使用+imageNamed:,那么把整张图片绘制到CGContext可能是最佳的方式了. 这里我们利用了CALayer的KVC来存储和检索任意的值,将图层和索引打标签. 使用KVC打标签

  2. [读书笔记]iOS 7 UI设计 对比度

    好久没写随笔了,最近在读<iOS 7 byTutorials>,很不错,推荐给大家. 每一个好的程序员也都是一个设计师,不懂设计的程序员不是好的CTO.哈哈,开个小玩笑. iOS 7设计的 ...

  3. Java多线程编程实战指南(核心篇)读书笔记(五)

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/76730459冷血之心的博客) 博主准备恶补一番Java高并发编程相 ...

  4. Java多线程编程实战指南(核心篇)读书笔记(二)

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/76651408冷血之心的博客) 博主准备恶补一番Java高并发编程相 ...

  5. Java多线程编程实战指南(核心篇)读书笔记(四)

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/76690961冷血之心的博客) 博主准备恶补一番Java高并发编程相 ...

  6. Java多线程编程实战指南(核心篇)读书笔记(三)

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/76686044冷血之心的博客) 博主准备恶补一番Java高并发编程相 ...

  7. Java多线程编程实战指南(核心篇)读书笔记(一)

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/76422930冷血之心的博客) 博主准备恶补一番Java高并发编程相 ...

  8. 机器学习实战 - 读书笔记(13) - 利用PCA来简化数据

    前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习心得,这次是第13章 - 利用PCA来简化数据. 这里介绍,机器学习中的降维技术,可简化样品数据. ...

  9. 机器学习实战 - 读书笔记(07) - 利用AdaBoost元算法提高分类性能

    前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习笔记,这次是第7章 - 利用AdaBoost元算法提高分类性能. 核心思想 在使用某个特定的算法是, ...

随机推荐

  1. HttpRunnerManager接口测试平台部署在服务器上(Centos + python3.6 + Mysql5.7 + uwsgi + nginx)

    整个思路:HttpRunnerManager + python3.6 + Mysql5.7 + uwsgi + nginx 安装依赖环境,将源代码传到服务器,修改settings,增加uwsgi配置, ...

  2. css 设计规范

    外部 div 设置 margin 和 padding: 内部每个元素只设计跟自己相关的属性,这样方便复用:

  3. Python - 使用Pyinstaller将Python代码生成可执行文件

    1 - Pyinstaller简介 Home-page: http://www.pyinstaller.org PyInstaller是一个能够在多系统平台(Windows.*NIX.Mac OS)上 ...

  4. [转载]Apple Watch 开发详解

    Apple Watch 开发详解 Apple Watch现在对于第三方开发者来说更多的还是一块额外的屏幕.暂时WatchKit没有能给出足够的接口.现在Watch App的主要运算逻辑需要依赖iPho ...

  5. 内存管理-slab[代码]

    主要介绍kmalloc和kfree代码流程,侧重kmalloc和kfree流程中锁使用规则,会引用到cpuset,mempolicy(内存策略),numa相关知识.如果读起来比较困难可以参考另一篇随笔 ...

  6. 线程间通信wait和notify【All】简介

    1.通信就是指相互交换一些数据或者发送一些控制指令,比如一个线程给另一个暂停执行的线程发送一个恢复执行的指令. 可变共享变量是天然的通信媒介,也就是说一个线程如果想和另一个线程通信的话,可以修改某个在 ...

  7. [EXP]Cisco RV110W - Password Disclosure / Command Execution

    #!/usr/bin/env python2 ##### ## Cisco RV110W Password Disclosure and OS Command Execute. ### Tested ...

  8. 从零开始学 Web 之 移动Web(三)Zepto

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  9. SQL 必知必会·笔记<11>创建高级联结

    1. 使用表别名 SQL 除了可以对列名和计算字段使用别名,还允许给表名起别名.这样 做有两个主要理由: 缩短SQL 语句: 允许在一条SELECT 语句中多次使用相同的表. 使用表别名示例: SEL ...

  10. jqGrid 翻页

    比如查出来有9条数据,表格第一页显示5条,第二页显示4条 第一次查询,后台返回9条数据,但是只显示第一页的5条, 当点击下一页,会再去数据库查询,只返回第二页的4条数据, 这时候再点击回到上一页,返回 ...