IOS 多线程01-线程基础知识
大部分现代操作系统,包括IOS,都支持执行线程的概念。每个进程可以包含多个线程,他们可以同时运行。如果只有一个处理器核心,操作系统将在所有执行线程之间切换,非常类似于在所有执行线程之间切换。如果拥有多个核心(核心),线程将像进程一样,分散到多个核心上去执行。
一个进程中的所有线程共享可执行程序代码和全局数据。每个线程也可以拥有一些独有的数据。线程可以使用一种成为互斥量或锁的特殊结构,这种结构可以确保特定的代码块无法一次没多个线程执行。在多个线程同时访问相同数据时,这有助于保证正确的结果,在一个线程更新某个值(在代码中称为临界区)时锁定其他线程。
处理线程的过程中我们通常会关注线程安全(thread-safe)问题。一些软件库在编写时考虑了线程并发性,并使用互斥量恰当地保护他们的所有临界区。也有一些代码库不是线程安全的。
举个例子,IOS的Cocoa Touch中,Foundation框架(包含适用于所有Object-C编程类型的基本类,如NSString、NSArray等)通常被视为线程安全的。但是,UIKit框架(包括专门构建GUI应用的类,如UIApplication、UIView及其所有子类等)是非线程安全的。这意味着一个运行的IOS应用中,处理任何UIKit对象的所有方法调用都应从相同线程执行,该线程称之为主线程-main thread。如果从另一个线程访问UIKit对象,那结果就发生很多意想不到的结果(错误)! --所以,更新UI要在主线程运行。
默认情况下,主线程执行IOS应用的所有操作(比如处理用户时间触发的操作),所以对于简单应用,没有什么需要担心的,用户触发的动作已经(默认)在主线程中运行。
IOS线程理念:
将长期运行的任务拆分为多个工作单元,并将这些单元添加到执行队列中。系统会为我们管理这些队列,为我们在多个线程上执行工作单元。我们不需要直接启动和管理后台线程,而可以从通常实现多线程应用所涉及的太多‘登记’工作中脱离出来,系统为我们完成这些工作。
线程安全问题,可以参照苹果官方文档:
IOS 多线程01-线程基础知识的更多相关文章
- IOS 多线程,线程同步的三种方式
本文主要是讲述 IOS 多线程,线程同步的三种方式,更多IOS技术知识,请登陆疯狂软件教育官网. 一般情况下我们使用线程,在多个线程共同访问同一块资源.为保护线程资源的安全和线程访问的正确性. 在IO ...
- Java多线程| 01 | 线程概述
Java多线程| 01 | 线程概述 线程相关概念 进程与线程 进程:进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是操作系统进行资源分配与调度的基本单位.可以把进程简单的理解 ...
- C#多线程开发-线程基础 01
最近由于工作的需要,一直在使用C#的多线程进行开发,其中也遇到了很多问题,但也都解决了.后来发觉自己对于线程的知识和运用不是很熟悉,所以将利用几篇文章来系统性的学习汇总下C#中的多线程开发. 线程基础 ...
- 【java基础】01 计算机基础知识
一.计算机基础知识 1. 计算机 1. 什么是计算机? 计算机在生活中的应用举例 计算机(Computer)全称:电子计算机,俗称电脑.是一种能够按照程序运行,自动.高速处理海量数据的现代化智能电子设 ...
- Java__线程---基础知识全面实战---坦克大战系列为例
今天想将自己去年自己编写的坦克大战的代码与大家分享一下,主要面向学习过java但对java运用并不是很熟悉的同学,该编程代码基本上涉及了java基础知识的各个方面,大家可以通过练习该程序对自己的jav ...
- java线程基础知识----线程基础知识
不知道从什么时候开始,学习知识变成了一个短期记忆的过程,总是容易忘记自己当初学懂的知识(fuck!),不知道是自己没有经常使用还是当初理解的不够深入.今天准备再对java的线程进行一下系统的学习,希望 ...
- Windows核心编程 第六章 线程基础知识 (上)
第6章 线程的基础知识 理解线程是非常关键的,因为每个进程至少需要一个线程.本章将更加详细地介绍线程的知识.尤其是要讲述进程与线程之间存在多大的差别,它们各自具有什么作用.还要介绍系统如何使用线程内核 ...
- C#当中的多线程_线程基础
前言 最近工作不是很忙,想把买了很久了的<C#多线程编程实战>看完,所以索性把每一章的重点记录一下,方便以后回忆. 第1章 线程基础 1.创建一个线程 using System; usin ...
- java核心技术-多线程之线程基础
说起线程,无法免俗首先要弄清楚的三个概念就是:进程.线程.协程.OK,那什么是进程,什么是线程,哪协程又是啥东西.进程:进程可以简单的理解为运行在操作系统中的程序,程序时静态代码,进程是动态运行着的代 ...
随机推荐
- 如果因特网中的所有链路都提供可靠的交付服务,TCP可靠传输服务是多余的吗?
IP协议因为是无连接的, 所以其传输是不可靠的.虽然链路保证了数据包在端到端的传输中不发生差错,但是它不能保证IP数据包是按照正确的书需到达最终的目的地.IP数据包可以使用不同的路由通过网络,到达接收 ...
- 通过Guid获取DirectoryEntry对象
绑定DirectoryEntry对象通常有两种方法,一种是通过字符串(如通过ADsPath),一种是通过Guid(参见:http://msdn.microsoft.com/zh-cn/library/ ...
- sql server 远程连接不上解决思路
1.数据库是否允许远程连接: 1.1.0登陆SQL Server 2008(windows身份认证),登陆后右击,选择“属性”.左侧选择“安全性”,选中右侧的“SQL Server 和 Windows ...
- js压缩
1:用cmd命名 1.1:cmd下执行命令:"copy dialog.js+menu.js abc.js/b",则会合并dialog合menu两个js到新生成的abc.js; 1. ...
- 基于 Winform + DotNetBar 写的股市行情助手
StockViewer 股市行情助手 简介 观看股市行情,窗口太显眼,是否担心被身后的老板发现? 窗口来回切换,工作时每隔几分钟就要看一眼股市.难道只能同时做一件事情吗? 现在,一款完全免费.开源的小 ...
- win32 COM组件编写
win32的com组件: 1. 编辑idl,idl文件会生成对应的com class和com interface,例如 [ object, uuid(xxxxxxxx-xxxx-xxxx-xxxx-x ...
- [UE4]AnimDynamics简介
AnimDynamics简介 Author:Jia Zhipeng AnimDynamics是UE4.11 Preview 5测试版本发布的AnimationBlueprint中的新节点.功能是通过简 ...
- 小游戏runpig总结
前几天写了一个JavaScript小游戏,大概是这样的 demo:strongfanfan.top/RunPig 源代码:www.github.com/strongfanfan/RunPig 画风简 ...
- 开启个人blog~
希望自己能坚持写blog,不断的总结,不断的沉淀.
- Linux内核--网络栈实现分析(五)--传输层之UDP协议(上)
本文分析基于Linux Kernel 1.2.13 原创作品,转载请标明出处http://blog.csdn.net/yming0221/article/details/7532512 更多请看专栏, ...