天天看点

iOS开发多线程篇—多线程简单介绍(笔记)

实际中应用:主线程只考虑

显示\刷新UI界面

    处理UI事件(比如点击事件、滚动事件、拖拽事件等)


    子线程处理:数据加载或者(耗费时间较长的操作)
           

多线程的主要目的:

线程并发分享 CPU 运算资源

    能适当提高程序的执行效率

    能适当提高资源利用率(CPU、内存利用率)

    解决:耗时操作会卡住主线程,严重影响UI的流畅度,给用户一种“卡”的坏体验
           

关于当前:cpu每次只执行一个线程(评论中指出多核的问题)进行查找

在百度知道上看到这么一条答案:

1、在超线程技术的情况下,单核和多核cpu处理并发进程都是并行处理的,但单核并行处理的数量远低于多核。单核比多核更容易在多进程时假死。
2、多核并不止是多几个运算器,包括一二级缓存也是独立的。
           

这篇文章可以看看:https://www.cnblogs.com/hitwhhw09/p/4718404.html

摘自这篇文章的语句:

什么时候该使用多线程呢?这要分四种情况讨论:

a.多核CPU——计算密集型任务。此时要尽量使用多线程,可以提高任务执行效率,例如加密解密,数据压缩解压缩(视频、音频、普通数据),否则只能使一个核心满载,而其他核心闲置。

b.单核CPU——计算密集型任务。此时的任务已经把CPU资源%消耗了,就没必要也不可能使用多线程来提高计算效率了;相反,如果要做人机交互,最好还是要用多线程,避免用户没法对计算机进行操作。

c.单核CPU——IO密集型任务,使用多线程还是为了人机交互方便,

d.多核CPU——IO密集型任务,这就更不用说了,跟单核时候原因一样。



程序员需要掌握的技巧/技术

()减少串行化的代码用以提高效率。这是废话。

()单一的共享数据分布化:把一个数据复制很多份,让不同线程可以同时访问。

()负载均衡,分为静态的和动态的两种。具体的参见有关文献。