1.多线程编程

参考:
Objective-C高级编程

深入浅出 iOS 并发编程

GCD 深入理解:第一部分

GCD 深入理解:第二部分

1.线程定义

1个CPU执行的CPU命令列为一条无分叉的路径。即为线程。

  • 源码通过编译器转换为cpu命令列(二进制代码)。应用程序启动后,将cpu的命令列配置到内存中。 cpu从应用程序制定的地址开始,一个一个的执行cpu的命令列。

  • 在OC中的if语句或者for语句等控制语句,或者函数调动的情况下,执行命令的地址会远离当前位置(位置迁移),但是cpu一次只能执行一个命令,不会分叉。

2.多线程

无分叉的路径不只1条,存在多条时即为多线程。

一个cpu可以通过上下文切换,并列的执行多个线程。多个cpu也可以并列的执行多个线程。

上下文切换:cpu可以在执行路径上进行切换,执行中路径的状态(如cpu的寄存器信息等)会保存在专用的内存块中。cpu切换后,可以从专用内存块中复原路径信息,继续执行cpu命令列。

3.优点和问题

1.优点:
使用多线程可以保证应用程序的响应性能。

2.问题:

  • 竞态条件(Race Condition)。指两个或两个以上线程对共享的数据进行读写操作时,最终的数据结果不确定的情况。

  • 死锁 指两个或两个以上的线程或者任务,它们之间互相等待彼此停止执行。

  • 优先倒置(Priority Inverstion)。指低优先级的任务会因为各种原因先于高优先级任务执行。

  • 内存销毁过大 使用太多线程会消耗大量内存。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容