多个线程“打架抢夺”同一个资源,该若何让它们循分?

admin/2020-07-23/ 分类:民生/阅读:

泉源 | 小林coding(ID:CodingLin)

前言

先来看看虚构的小故事

已经晚上 11 点了,程序员小明的双手还在键盘上飞舞着,眼神依然注视着的电脑屏幕。

没办法这段时间公司业绩增进中,需求自然也多了起来,加班自然也少不了。

天气变化莫测,这时窗外下起了蓬勃大雨,同时闪电轰鸣。

但这一丝都没有影响到小明,始料未及,突然一道伟大的雷一闪而过,办公楼就这么停电了,随后整栋楼都在回荡着的小明那一声撕心裂肺的「卧槽」。

此时,求小明的心内里积有多大?

等小明心里平复后,突然肚子异常的痛,想上茅厕,小明心想肯定是晚上吃的某堡王有问题

整栋楼都停了电,小明两眼一抹黑,啥都看不见,只能靠摸墙的方式,一步一步的来到了茅厕门口。

到了茅厕(共享资源),由于着实太急,小明直接冲入了茅厕里,用手试探着恰好第一个门没锁门,便夺门而入。

这就荒唐了,这个门内里正好小红在上着茅厕,正好这个茅厕门是坏了的,没办法锁门。

黑黑暗,小红虽然看不见,但靠着声音,发现自己眼前的这扇门有消息,以为不对劲,于是铆足了气力,用她穿着高跟鞋脚,用力地一脚踢了已往。

小明很幸运,被踢中了「命脉」,撕心裂肺地喊出了一个字「痛」!

故事说完了,扯了那么多,实际上是为了说明,对于共享资源,若是没有上锁,在多线程的环境里,那么就可能会发生翻车现场。

接下来,用 30 张图,带大家走进操作系统中制止多线程资源竞争的互斥、同步的方式。

竞争与协作

在单核 CPU 系统里,为了实现多个程序同时运行的假象,操作系统通常以时间片调剂的方式,让每个历程执行每次执行一个时间片,时间片用完了,就切换下一个历程运行,由于这个时间片的时间很短,于是就造成了「并发」的征象。

另外,操作系统也为每个历程建立伟大、私有的虚拟内存的假象,这种地址空间的抽象让每个程序似乎拥有自己的内存,而实际上操作系统在背后秘密地让多个地址空间「复用」物理内存或者磁盘。

,

Allbet Gmaing代理

欢迎进入Allbet Gmaing代理(Allbet Game):www.aLLbetgame.us,欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。

TAG:
阅读:
广告 330*360
广告 330*360
Sunbet_进入申博sunbet官网
微信二维码扫一扫
关注微信公众号
新闻自媒体 Copyright © 2002-2019 Sunbet 版权所有
二维码
意见反馈 二维码