美文网首页
准备总结一下多线程1

准备总结一下多线程1

作者: IOS_Wek | 来源:发表于2017-11-08 16:22 被阅读6次

首先说到多线程脑海里浮现的是NSThread 和 GCD,然后呢NSThread虽然听说了很多,自己却没什么用过。那就先从这两个入手分析分析吧。

1, NSThread 周期
1)NSThread的创建 : NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(threadDemo) object:nil];
2)就绪, 将线程放进可调度线程池,等待被CPU调度:[thread start];
3)运行, CPU负责调度"可调度线程池"中的处于"就绪状态"的线程,结束之前状态有可能从就绪和运行两个状态自由切换,该过程又CPU决定
4)阻塞, 正在运行的线程,当满足某个条件时,可以用休眠或者锁来阻塞线程的执行:[NSThread sleepForTimeInterval:1.0];
5)死亡, 要不程序崩溃,要不自己写代码 [NSThread exit];

2,简单的说完了,现在说复杂的了。关于锁
当两个线程读取修改同一个资源的时候呢,可以用@synchronized这个互斥锁,表示我这个资源正在使用哦,等我运行完了你再用,这样就不会有脏数据的产生。可是这样也会运行慢一点,牺牲了性能保证了安全性。

3,nonatomic和atomic 其实一直都不理解为什么会有这两个东西,然后网上的解析永远都是atomic 是线程安全的,可是太慢,nonatomic 是线程不安全的,效率很高,一般都用这个,然后呢,然后就没然后。今天多看了一点atomic 的知识,让我感觉atomic 很像一个加了互斥锁的nonatomic一样,保证我这个属性在用的时候别人不能用,所以线程安全。然后网上说atomic是单写多读的,意思是写的话就互斥,读的时候就可以一起读。类似:A:我在写进去 B:哦,那我等你写完吧。A:我在读这个耶 B:来来来,那我们一起。就是这样的道理了嘛。

atomic 其实是自带自旋锁的,然后什么是自旋锁呢?那:
互斥锁和自旋锁对比
共同点:
都能够保证同一时间,只有一条线程执行锁定范围的代码
不同点:
互斥锁:如果发现有其他线程正在执行锁定的代码,线程会进入休眠状态,等待其他线程执行完毕,打开锁之后,线程会重新进入就绪状态.等待被CPU重新调度.
自旋锁:如果发现有其他线程正在执行锁定的代码,线程会以死循环的方式,一直等待锁定代码执行完成.

4,说了那么多乱七八糟的,居然还不说GCD,好吧,马上来说。

相关文章

  • 准备总结一下多线程1

    首先说到多线程脑海里浮现的是NSThread 和 GCD,然后呢NSThread虽然听说了很多,自己却没什么用过。...

  • python多线程基础

    多线程准备脚本test01 多线程准备脚本test02 多线程准备脚本test03 多线程准备脚本test04 1...

  • 理理iOS的多线程解决方案 - GCD

    周末梳理了一下iOS几种多线程的方案,总结下平时GCD的主要用法和场景。 一、iOS常见的多线程方案 (1) Pt...

  • iOS多线程之 pThread

    前面总结了多线程的基本概念,今天学习总结一下多线程的其中一种实现方案pThread 一、基本概念 pThread(...

  • 多线程网络总结/runloop图解

    1.多线程总结图: 2.runloop图解:

  • iOS多线程:『GCD』详尽总结

    iOS多线程:『GCD』详尽总结 iOS多线程:『GCD』详尽总结

  • iOS多线程

    面试过程中,总是会遇到对多线程的提问,下面我来总结一下多线程的应用。多线程分GCD、NSOperation、NST...

  • iOS之多线程(全)

    很多人都写过多线程的文章,今天我也来小小的总结一下: 多线程基本概念 1个应用程序要想执行任务,必须得有线程(每1...

  • iOS多线程知识点总结之: 进程和线程

    最近准备找工作, 所以又把多线程的知识再学习总结一遍, 让自己更好的熟悉和运用 iOS 多线程的相关操作. 进程 ...

  • java多线程-概念&创建启动&中断&守

    今天开始就来总结一下java多线程的基础知识点,下面是本篇的主要内容 1.什么是线程以及多线程与进程的区别 2.多...

网友评论

      本文标题:准备总结一下多线程1

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