美文网首页
1.多线程编程

1.多线程编程

作者: 你weixiao的时候很美 | 来源:发表于2019-02-03 13:08 被阅读16次

参考:
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)。指低优先级的任务会因为各种原因先于高优先级任务执行。

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

相关文章

  • 1.多线程编程

    参考:Objective-C高级编程 深入浅出 iOS 并发编程 GCD 深入理解:第一部分 GCD 深入理解:第...

  • 5.多线程注意事项

    分析工具:1. ThreadSanitizer2. valgrind多线程注意事项:1. linux的多线程编程的...

  • 多线程编程

    多线程编程之Linux环境下的多线程(一)多线程编程之Linux环境下的多线程(二)多线程编程之Linux环境下的...

  • Python 3 多线程编程

    本文主要基于python 3.5实现多线程编程 1. 创建多线程 2. 多线程间的同步,lock机制 3. que...

  • Go语言之通道(一)

    1. 开篇 我决定学习Go语言的时候,就做好了多线程编程的准备,而多线程编程,很重要的一点就是线程间通信。比如Ja...

  • 多线程之Thread的join方法

    1.前言 在java编程中多线程编程一直时一个重点和难点,今天分享一个多线程知识中的小点,关于Thread.joi...

  • iOS多线程

    多线程编程

  • iOS__多线程

    iOS多线程 之NSThread的使用 1、简介: 1.1 iOS有三种多线程编程的技术,分别是: 1.、NSTh...

  • Python 并行编程

    多线程编程 Python 主要提供了包括thread、threading、Queue等多线程编程模块。thread...

  • java并发编程艺术笔记

    1. 并发编程遇到的挑战 多线程 减少上下文切换的方式: 无锁并发编程:多线程竞争锁的时候会引起上下文的切换,在多...

网友评论

      本文标题:1.多线程编程

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