【读书笔记】iOS-“一心多用”利用多线程提升性能
iPhone将具有支持不同类型多线程API的能力,这些API包括:POSIX线程,NSObject,NSThread和NSOperation.
iPhone操作系统是一个真正的抢占式,多任务操作系统,允许开发人员创建多线程应用。
拿着一个iPhone时,我手中实际是 一个配备Unix操作系统的抢占式,多任务计算机,它有一个图形界面,并提供GPS功以,Wi-Fi以及大量内置的函数库,另外这也是一个手机 ,这实在令人惊叹,真是了不起!
线程或执行线程是计算机程序中一个分支,会引发两个或多个并发运行的任务。线程包含在计算机程序中
基本来说,如果应用在完成一个或多个任务的同时还需要保证对用户的响应性,就应当对应用使用多线程。
多线程是指,操作系统控制多个进程共享CPU时间并等待它们的时间片到来,以达成多个任务同时运行的效果。操作系统会让CPU为一个进程服务几毫秒,然后要求这个进程进入休眠状态,而让CPU为其他进程提供服务。
进程就是正在运行的应用
如果多个线程试图访问资源并同时完成读和写操作,资源的值可能不正确,而且很可能被破坏。例如,假设两个线程分别表示一个游戏应用中的两个角色,且这两个线程同时运行。同步是指保持数据一致或者维护线程之间数据的完整性。如果一个线程试图读取gameScroe变量,而另一个线程试图更新gameScore变量,gameScore变量就可能不正确。
临界区是一段代码,可以保护共享资源,防止多个线程同时访问这段代码而破坏共享资源。
存在某些条件时,线程访问资源的时间顺序可能导致出乎意料的结果。这种情况通常称为一种竞态条件。
在多线程中互斥锁用来避免同时使用一个公共资源。很多著名的竞态条件例子就曾导致灾难性的后果。
两个或多个线程永远阻塞,互相等待对方释放各自独特持有的资源时,则会出现线程应用中另一个常见的陷阱。这称为一个死锁条件。
启动一个线程时,实际上会脱离Cocoa框架。此时,要由我们来负责清理内存池。如果没有这样做,就会出现内存泄漏。
运行循环,会处理你用来调度工作的事件差协调到来事件的接收,其作用是在有工作时保持线程的繁忙状态,而在没有任何工作时置线程为休眠模式。要了解有关运行循环的更多信息。
参考资料:《精彩iPhone炫酷开发-七位一线高手的编程和设计范例》
【读书笔记】iOS-“一心多用”利用多线程提升性能的更多相关文章
- 读书笔记-iOS核心动画高级技巧
如果不使用+imageNamed:,那么把整张图片绘制到CGContext可能是最佳的方式了. 这里我们利用了CALayer的KVC来存储和检索任意的值,将图层和索引打标签. 使用KVC打标签
- [读书笔记]iOS 7 UI设计 对比度
好久没写随笔了,最近在读<iOS 7 byTutorials>,很不错,推荐给大家. 每一个好的程序员也都是一个设计师,不懂设计的程序员不是好的CTO.哈哈,开个小玩笑. iOS 7设计的 ...
- Java多线程编程实战指南(核心篇)读书笔记(五)
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/76730459冷血之心的博客) 博主准备恶补一番Java高并发编程相 ...
- Java多线程编程实战指南(核心篇)读书笔记(二)
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/76651408冷血之心的博客) 博主准备恶补一番Java高并发编程相 ...
- Java多线程编程实战指南(核心篇)读书笔记(四)
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/76690961冷血之心的博客) 博主准备恶补一番Java高并发编程相 ...
- Java多线程编程实战指南(核心篇)读书笔记(三)
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/76686044冷血之心的博客) 博主准备恶补一番Java高并发编程相 ...
- Java多线程编程实战指南(核心篇)读书笔记(一)
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/76422930冷血之心的博客) 博主准备恶补一番Java高并发编程相 ...
- 机器学习实战 - 读书笔记(13) - 利用PCA来简化数据
前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习心得,这次是第13章 - 利用PCA来简化数据. 这里介绍,机器学习中的降维技术,可简化样品数据. ...
- 机器学习实战 - 读书笔记(07) - 利用AdaBoost元算法提高分类性能
前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习笔记,这次是第7章 - 利用AdaBoost元算法提高分类性能. 核心思想 在使用某个特定的算法是, ...
随机推荐
- Android之ListView,AsyncTask,GridView,CardView,本地数据存储,SQLite数据库
版权声明:未经博主允许不得转载 补充 补充上一节,使用ListView是用来显示列表项的,使用ListView需要两个xml文件,一个是列表布局,一个是单个列表项的布局.如我们要在要显示系统所有app ...
- 《http权威指南》读书笔记3
概述 最近对http很感兴趣,于是开始看<http权威指南>.别人都说这本书有点老了,而且内容太多.我个人觉得这本书写的太好了,非常长知识,让你知道关于http的很多概念,不仅告诉你怎么做 ...
- 抽取JDBC工具类并增删改查
抽取工具类: package demo; /* * 工具类 */ import java.sql.Connection; import java.sql.DriverManager; import j ...
- nginx反向代理转发apache配置 之 cookie去哪儿了?
在公司接手了个微信项目,由于微信环境下访问网站需要使用对外开放的域名,所以有相关问题,都是直接运维同事帮忙处理. 原理是这样: 方案一: 1. 将域名解析指向测试服务器的地址: 2. 开放相关端口访问 ...
- HTML里面form表单name,action,method,target,enctype等属性用法
HTML里面的form表单里面的name,target,enctype,method以及action的用法 HML表单HTML里面的表单是HTML页面与浏览器交互的重要手段,表单主要提交一些客户端的数 ...
- 读取.Properties文件以及Spring注解读取文件内容
public class Main { public static void main(String[] args) throws IOException { //创建Properties对象 Pro ...
- laravel5实现第三方登录(微信)
背景 最近手头一个项目需要实现用户在网站的第三方登录(微信和微博),后端框架laravel5.4. 实现过程以微信网页版第三方登录,其他于此类似,在此不做重复. 准备工作 网站应用微信登录是基于OAu ...
- Linux学习笔记之八————vim编辑器常用命令总结
<1>从命令行模式到插入模式 i :在光标前插入 a :在光标后插入 I :在光标所处在的行的行首 A :在光标所处在的行的末尾 o :在光标所处在的行的下一行 行首 O :在光标所 ...
- Rsync文件同步工具
前段时间因公司需求,需要把备份的文件进行同步保存,后面就想到了我们大家都最熟悉的文件同步工作Rsync,于是就捣鼓了一下午时间,然后总结了下大概过程和参数详情. 首先了解了下rsync同步的大致原理: ...
- mysql 开发进阶篇系列 35 工具篇 mysqldump(数据导出工具)
一.概述 mysqldump客户端工具是用来备份数据库或在不同数据库之间进行数据迁移.备份内容包含创建表或装载表的sql语句.mysqldump目前是mysql中最常用的备份工具. 三种方式来调用my ...