多线程的理论基础

2018-03-13  本文已影响0人  Michael_748c

转载自:https://juejin.im/post/5aa75d5af265da23906bad44

(一)CPU概念基础

1,超线程技术

1,单核CPU

单核CPU同一时刻只能执行一个线程。

2,多核CPU

多核CPU就是基板上集成有多个单核CPU。

单核CPU同一时刻只能执行一个线程,因此集成多个单核CPU的多核CPU可以同时运行多个线程,比如双核CPU可以同时执行两个线程。

多核CPU要用多线程才能体现出优势。同样,多线程也要在多核CPU上才能体现出优势。

(二)并发与并行

1,什么是并发?什么是并行?

并发就是几件事切换着做,有效利用等待的时间。

并行就是几件事同时做。

2,举个栗子

小明炖汤和写程序这两件事交替地执行,同一时刻只做一件事,但是这样却能有效利用等待炖汤的时间,大大提高了效率。

当然计算机的并发不同任务的切换速度非常快,看起来就像同时进行一样,实际上不是同时进行。

(三)多线程实现的是并发还是并行?

多线程可能被分配到同一个CPU内核中执行,也可能被分配到不同的CPU执行,分配过程是操作系统管理的,无法在程序中进行控制。所以我们写的多线程程序,可能是并行的,也可能是并发的,关键看运行过程中操作系统是将这多个线程分配到不同的CPU中还是同一个CPU中。

(四)多线程的应用场景

多线程可以帮助我们有效利用多核CPU的优势,提高性能;但是如果使用不当会导致数据不一致的问题。

1,需要及时响应

比如有一个线程是处理大量数据的耗时操作,如果不采取多线程,其他任务无法执行。这样用户只能等待该耗时操作执行完后才能得到其他信息或进行下一步操作,用户体验大大降低。

就比如有的程序运行一些耗时操作,看起来就像死机一样,给用户的体验特别不好。
如果采用多线程,那么在耗时操作处理的时候,可以让另一个线程去执行,反馈一些其他信息给用户,这样用户就知道程序并没有卡死。

2,解决性能问题

多线程主要用于解决因为并发而导致的性能问题。

比如我们要爬取某个小说网站的所有小说简介和所有小说正文,我们就可以考虑创建两个线程,一个线程专门用于爬取小说简介,一个线程专门用于爬取小说正文。

比如爬虫应用中,爬虫队列中存在很多未爬取的任务,此时开启多线程就可以大大提高性能,缩短爬取时间。

上一篇 下一篇

猜你喜欢

热点阅读