多线程的作用

简介: 随着工业的进步,现在的笔记本、台式机乃至商用的应用服务器至少也都是双核的,4核、8核甚至16核的也都不少见,如果是单线程的程序,那么在双核CPU上就浪费了50%,在4核CPU上就浪费了75%。

多线程的作用

发挥多核CPU的优势

随着工业的进步,现在的笔记本、台式机乃至商用的应用服务器至少也都是双核的,4核、8核甚至16核的也都不少见,如果是单线程的程序,那么在双核CPU上就浪费了50%,在4核CPU上就浪费了75%。

单核CPU上所谓的"多线程"那是假的多线程,同一时间处理器只会处理一段逻辑,只不过线程之间切换得比较快,看着像多个线程"同时"运行罢了**。

多核CPU上的多线程才是真正的多线程,它能让你的多段逻辑同时工作,多线程,可以真正发挥出多核CPU的优势来,达到充分利用CPU的目的。

防止阻塞

从程序运行效率的角度来看,单核CPU不但不会发挥出多线程的优势,反而会因为在单核CPU上运行多线程导致线程上下文的切换,而降低程序整体的效率。

但是单核CPU我们还是要应用多线程,就是为了防止阻塞。试想,如果单核CPU使用单线程,那么只要这个线程阻塞了,比方说远程读取某个数据吧,对端迟迟未返回又没有设置超时时间,那么你的整个程序在数据返回回来之前就停止运行了。

多线程可以防止这个问题,多条线程同时运行,哪怕一条线程的代码执行读取数据阻塞,也不会影响其它任务的执行。

便于建模

这是另外一个没有这么明显的优点了。假设有一个大的任务A,单线程编程,那么就要考虑很多,建立整个程序模型比较麻烦。

但是如果把这个大的任务A分解成几个小任务,任务B、任务C、任务D,分别建立程序模型,并通过多线程分别运行这几个任务,那就简单很多了。

上下文切换

在上下文切换过程中,CPU会停止处理当前运行的程序,并保存当前程序运行的具体位置以便之后继续运行。

从这个角度来看,上下文切换有点像我们同时阅读几本书,在来回切换书本的同时我们需要记住每本书当前读到的页码。

在程序中,上下文切换过程中的“页码”信息是保存在进程控制块(PCB)中的。PCB还经常被称作“切换桢”(switchframe)。“页码”信息会一直保存到CPU的内存中,直到他们被再次使用。

上下文切换是存储和恢复CPU状态的过程,它使得线程执行能够从中断点恢复执行。上下文切换是多任务操作系统和多线程环境的基本特征。

目录
相关文章
|
9月前
多线程的线程工具的初步使用和原理详解
多线程的线程工具的初步使用和原理详解
49 0
|
9月前
|
Java
多线程的相关概念
多线程的相关概念
45 1
|
6月前
|
Java 调度
多线程学习之多线程的三种实现方式及应用
多线程学习之多线程的三种实现方式及应用
33 0
|
8月前
|
算法 安全 Java
探索多线程编程:线程的本质、状态和属性
探索多线程编程:线程的本质、状态和属性
|
11月前
|
存储 Java C++
多线程的2种实现方式
多线程的2种实现方式
79 0
|
12月前
|
消息中间件 存储 算法
多线程概念,常用接口与多进程之间的比较
多线程概念,常用接口与多进程之间的比较
51 0
多线程之常见方法使用
线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位;进程是系统资源分配的单位,线程是系统调度的单位。一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线;进程之间相互独立,进程之间不能共享资源,而线程共享所在进程的地址空间和其它资源。同时线程还有自己的栈和栈指针,程序计数器等寄存器。
|
Java 调度
【多线程:常见方法】
【多线程:常见方法】
83 0
|
调度
【多线程:一些方法的注意点】
【多线程:一些方法的注意点】
86 0
|
存储
多线程原理和实现方式
多线程原理和实现方式
155 1