首页 技术 正文
技术 2022年11月15日
0 收藏 691 点赞 5,214 浏览 987 个字

大部分现代操作系统,包括IOS,都支持执行线程的概念。每个进程可以包含多个线程,他们可以同时运行。如果只有一个处理器核心,操作系统将在所有执行线程之间切换,非常类似于在所有执行线程之间切换。如果拥有多个核心(核心),线程将像进程一样,分散到多个核心上去执行。

一个进程中的所有线程共享可执行程序代码和全局数据。每个线程也可以拥有一些独有的数据。线程可以使用一种成为互斥量或锁的特殊结构,这种结构可以确保特定的代码块无法一次没多个线程执行。在多个线程同时访问相同数据时,这有助于保证正确的结果,在一个线程更新某个值(在代码中称为临界区)时锁定其他线程。

处理线程的过程中我们通常会关注线程安全(thread-safe)问题。一些软件库在编写时考虑了线程并发性,并使用互斥量恰当地保护他们的所有临界区。也有一些代码库不是线程安全的。

举个例子,IOS的Cocoa Touch中,Foundation框架(包含适用于所有Object-C编程类型的基本类,如NSString、NSArray等)通常被视为线程安全的。但是,UIKit框架(包括专门构建GUI应用的类,如UIApplication、UIView及其所有子类等)是非线程安全的。这意味着一个运行的IOS应用中,处理任何UIKit对象的所有方法调用都应从相同线程执行,该线程称之为主线程-main thread。如果从另一个线程访问UIKit对象,那结果就发生很多意想不到的结果(错误)! —所以,更新UI要在主线程运行

默认情况下,主线程执行IOS应用的所有操作(比如处理用户时间触发的操作),所以对于简单应用,没有什么需要担心的,用户触发的动作已经(默认)在主线程中运行。

IOS线程理念:

将长期运行的任务拆分为多个工作单元,并将这些单元添加到执行队列中。系统会为我们管理这些队列,为我们在多个线程上执行工作单元。我们不需要直接启动和管理后台线程,而可以从通常实现多线程应用所涉及的太多‘登记’工作中脱离出来,系统为我们完成这些工作。

线程安全问题,可以参照苹果官方文档:

https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/Multithreading/ThreadSafetySummary/ThreadSafetySummary.html

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,488
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,903
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,736
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,488
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,127
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,289