美文网首页
线程补充知识

线程补充知识

作者: 小圆菜陪你财务自由 | 来源:发表于2018-07-02 17:51 被阅读0次

一、线程的状态有哪些:

注:此图来源于我正在学习的vip课程(潭州课程)。很不错,大家可参去看看(毕竟用了人家东西,打个广告,请大家理解)。

从上图可以看出来,线程有五种状态,并且运行状态是我们不能控制的,只能等着CPU去调度。

二、原子和非原子属性

我们在声明一个属性的时候,通常定义为nonatomic,而不使用atomic,为什么呢?他们分别是什么意思呢?

atomic:原子属性,为setter方法加锁(默认就是atomic)

nonatomic:非原子属性,不会为setter方法加锁

nnonatomic和atomic对比:

1> atomic:线程安全,需要消耗大量的资源

2> nonatomic:非线程安全,适合内存小的移动设备

原子属性内部就有一把锁称作 “自旋锁”(知识点来自潭州课堂)

那么自旋锁和互斥锁(@synchronized)的共同点和区别是什么呢?

- 共同点

    都能保证同一个时间点就只有一条线程访问!

- 不同点

    互斥锁:如果发现有其他线程正在执行锁定的代码,线程就会进入睡眠状态,等待其他线程执行完毕,打开锁之后,线程就会被唤醒!

    自旋锁:如果发现有其他线程正在执行锁定的代码,线程就会用死循环的方式,一直等待锁定代码执行完毕!

  无论什么锁,都是以"性能"作为代价来保证"安全"

三、线程间通信

概念就不写了,大家想必都知道,我就简单说下通信常用的方法有哪些(其实也没必要写,不过我很执着,哈哈):

- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait;

- (void)performSelector:(SEL)aSelector onThread:(NSThread *)thr withObject:(id)arg waitUntilDone:(BOOL)wait;

这是常用的方法,也许不太全面,大家可以补充。

接下来我们将一起探讨牛逼的GCD和NSOperation,好不好,好不好?答理是 好 好 好。

相关文章

  • 线程补充知识

    一、线程的状态有哪些: 注:此图来源于我正在学习的vip课程(潭州课程)。很不错,大家可参去看看(毕竟用了人家东西...

  • 多线程交替顺序执行

    多线程交替顺序执行 1.知识补充 1.1Condition 控制线程通信 1.2面试题 1.3解决方法 在这里,我...

  • 多线程Curl使用说明

    多线程,补充

  • JAVA-线程知识点补充

    线程的新启方式有几种? ①继承Thread类②实现Runnable接口没有其他了,就算是实现callable接口,...

  • Java并发类库提供的线程池有哪几种?分别有什么特点?

    问题: Java并发库提供的线程池有哪几种?分别有什么特点? 知识点补充 Executor框架 ThreadPoo...

  • 2018-03-08 新的章程

    android开发: 目前需要补充的知识: 设计模式 C++,JNI,NDK 多线程 第三方框架源码解析 Andr...

  • JNI——FFmpeg音视频同步(一)

    在做音视频同步之前我们需要先补充一下C中的线程知识。 函数定义:pthread_create函数 原型:in...

  • Java内存模型

    一 谈谈对Java内存模型的理解 1️⃣ 线程私有 补充知识点 :1. 内存简介32位 : 2^32 的可寻址范围...

  • 知识补充

    在不允许修改参数变量的值时可以加上const修饰符 图片 在ios中会自动识别图片@几x来按比例显示假如图片是xx...

  • 知识补充

    1. 傅立叶变换: (1) 傅立叶级数:法国数学家傅里叶发现,任何周期函数都可以用正弦函数和余弦函数构成的无穷级数...

网友评论

      本文标题:线程补充知识

      本文链接:https://www.haomeiwen.com/subject/sfiluftx.html