多线程理解

####本文介绍我对于多线程的理解。


####一、概念

1. 操作系统下的多进程场景

首先线程是进程内的任务执行单元,也是操作系统直接支持的执行单元。
关于进程和线程的区别,我们可以看如下一个很熟悉的场景:
例如我们经常做的一件事情,你的电脑打开了一个浏览器,同时又打开了音乐播放器,你一边听歌一边刷网页。
这个时候,我们的系统就运行着2个进程,这两个进程之间相互独立,互不干扰,进行着自己的任务。
我们可以把系统内打开的一个应用程序理解成一个进程,每个进程中最少有一个线程来执行任务,这就是操作系统下的多进程场景。

但其实上面的情景是属于操作系统下的多进程,不是单个程序内的多进程,这种多进程跟我们在单个程序内的多线程没有什么可以比较的。


2. 线程

既然上面说到线程是操作系统直接支持的任务执行单元,现在我们有一个任务需要完成,如果是单线程执行的话,同一个时间内只会有一个cpu来运行该线程,但这对现在基本都是多核处理器的系统来说,其他cpu没有利用起来,属于一种资源浪费。因此我们在线程中可以开出其它子线程来完成任务,提高任务执行效率。

举个最简单例子:
我们的任务需要两个计算型操作:

A()
B()

每个操作耗时10秒,如果是单线程,这时我们的任务需要20秒。

线程A:A()
线程B:B()

如果是多核情况下使用多线程,不同的线程就被分到不同的cpu上进行处理,我们的任务需要10秒完成。


####二、引入多线程的目的

####1.提高运行效率

就如上面提到的,引入多线程可以提高程序运行效率,合理利用cpu资源。但是如果是在单核cpu中,多线程就没有用了吗?
并不是。这就是引入多线程的第二个目的了。


####2.防止阻塞
同样如果我们使用单线程执行一个任务,如果碰到I/O操作,后面的任务就要被阻塞,这时候cpu就处于空闲状态。
如果是多线程的情况,就可以各自执行不同的操作,即使I/O阻塞,也不会影响另一个线程中的cpu计算操作。


  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值