当前位置: 首页 > news >正文

石家庄做公司网站成都专业网站推广公司

石家庄做公司网站,成都专业网站推广公司,自建网站如何备案,网络规划设计师报名费目录 一、死锁 二、Golang死锁场景 2.1 重复上锁 2.2 不会减少的 WaitGroup 2.3 空select 2.4 channel 一、死锁 1.golang中死锁的触发条件: 死锁是当 Goroutine 被阻塞而无法解除阻塞时产生的一种状态。 2.操作系统死锁: 发生死锁时,线…

目录

一、死锁

二、Golang死锁场景

2.1 重复上锁

2.2 不会减少的 WaitGroup

2.3 空select

2.4 channel


一、死锁

1.golang中死锁的触发条件:

死锁是当 Goroutine 被阻塞而无法解除阻塞时产生的一种状态。

2.操作系统死锁:

发生死锁时,线程永远不能完成,系统资源被阻碍使用,以致于阻止了其他作业开始执行。在讨论处理死锁问题的各种方法之前,我们首先深入讨论一下死锁特点。

必要条件:

如果在一个系统中以下四个条件同时成立,那么就能引起死锁:

  • 互斥:至少有一个资源必须处于非共享模式,即一次只有一个线程可使用。如果另一线程申请该资源,那么申请线程应等到该资源释放为止。
  • 占有并等待:—个线程应占有至少一个资源,并等待另一个资源,而该资源为其他线程所占有。
  • 非抢占:资源不能被抢占,即资源只能被线程在完成任务后自愿释放。
  • 循环等待:有一组等待线程 {P0,P1,…,Pn},P0 等待的资源为 P1 占有,P1 等待的资源为 P2 占有,……,Pn-1 等待的资源为 Pn 占有,Pn 等待的资源为 P0 占有。

我们强调所有四个条件必须同时成立才会出现死锁。循环等待条件意味着占有并等待条件,这样四个条件并不完全独立。

二、Golang死锁场景

2.1 重复上锁

写写冲突,读写冲突,读读不冲突。golang中的锁是不可重入锁,对已经上了锁的写锁,再次申请锁是会报死锁。上了读锁的锁,再次申请写锁会报死锁,而申请读锁不会报错。

案例1:

重复上写锁

package main
import("sync"
)
func main(){var lock sync.Mutexlock.Lock()lock.Lock()
}

结果:死锁

正常情况:

func main() {var lock sync.RWMutexlock.RLock()lock.RLock()
}
//正常执行

2.2 不会减少的 WaitGroup

不会减少的 WaitGroup会永久阻塞

案例1:

func main() {var wg sync.WaitGroupwg.Add(1)wg.Wait()//报死锁错误
}

结果:

2.3 空select

案例:

package mainfunc main() {select {}
}
//报死锁错误

结果:

2.4 channel

1.为 nil 的channel 发送、接受数据都会阻塞;

2.无缓冲的channel 发送、接受数据都会阻塞。解决方案:边接受边读取

3.channel 缓冲区满了的,继续发送数据会阻塞。解决办法:读取channel中的数据

4.当 ch 中没有数据的时候,就是从空的channel中接受数据,for range ch 会发生阻塞,但是无法解除阻塞,发生死锁。 解决:当数据发送完了过后,close channel

案例1:

func main() {var ch chan struct{}ch <- struct{}{}
}
//报死锁错误

结果:

案例2:

func main() {ch := make(chan struct{})<- ch
}
//报死锁错误

结果:

参考:关于golang中死锁的思考与学习_Golang_脚本之家


文章转载自:
http://alkaloid.rkck.cn
http://saucebox.rkck.cn
http://portfolio.rkck.cn
http://gerontics.rkck.cn
http://hulled.rkck.cn
http://unwreathe.rkck.cn
http://granddad.rkck.cn
http://cesarean.rkck.cn
http://kosher.rkck.cn
http://contrasuggestible.rkck.cn
http://securable.rkck.cn
http://machinery.rkck.cn
http://lauryl.rkck.cn
http://sandron.rkck.cn
http://nagmaal.rkck.cn
http://risque.rkck.cn
http://postulate.rkck.cn
http://encoder.rkck.cn
http://barbican.rkck.cn
http://halloo.rkck.cn
http://ample.rkck.cn
http://ethephon.rkck.cn
http://scraping.rkck.cn
http://schedular.rkck.cn
http://ainu.rkck.cn
http://planking.rkck.cn
http://accordatura.rkck.cn
http://mint.rkck.cn
http://shrike.rkck.cn
http://statecraft.rkck.cn
http://paratransit.rkck.cn
http://halobiotic.rkck.cn
http://gilbertian.rkck.cn
http://hippomenes.rkck.cn
http://sulcus.rkck.cn
http://ayin.rkck.cn
http://dowdy.rkck.cn
http://volutin.rkck.cn
http://balzacian.rkck.cn
http://potbelly.rkck.cn
http://upstreet.rkck.cn
http://catenane.rkck.cn
http://venerology.rkck.cn
http://dictatorship.rkck.cn
http://unreclaimable.rkck.cn
http://outrelief.rkck.cn
http://moco.rkck.cn
http://heterosex.rkck.cn
http://cataclasis.rkck.cn
http://solemnly.rkck.cn
http://pollenosis.rkck.cn
http://leukodystrophy.rkck.cn
http://bowlful.rkck.cn
http://polysyllable.rkck.cn
http://latinic.rkck.cn
http://moorman.rkck.cn
http://olympiad.rkck.cn
http://acknowledgment.rkck.cn
http://atypical.rkck.cn
http://spectrochemistry.rkck.cn
http://interplay.rkck.cn
http://uncorrected.rkck.cn
http://beerless.rkck.cn
http://lobular.rkck.cn
http://regedit.rkck.cn
http://cacotrophia.rkck.cn
http://lipogrammatic.rkck.cn
http://recrimination.rkck.cn
http://tonal.rkck.cn
http://equivalent.rkck.cn
http://candiot.rkck.cn
http://quasifission.rkck.cn
http://attirement.rkck.cn
http://christopher.rkck.cn
http://hypabyssal.rkck.cn
http://rtt.rkck.cn
http://polychresty.rkck.cn
http://othello.rkck.cn
http://whare.rkck.cn
http://decenniad.rkck.cn
http://awmous.rkck.cn
http://calves.rkck.cn
http://commode.rkck.cn
http://usher.rkck.cn
http://pretone.rkck.cn
http://flitch.rkck.cn
http://powerbook.rkck.cn
http://hypermetrope.rkck.cn
http://jete.rkck.cn
http://choko.rkck.cn
http://catomountain.rkck.cn
http://hexachlorethane.rkck.cn
http://gozitan.rkck.cn
http://tentmaker.rkck.cn
http://whirl.rkck.cn
http://attached.rkck.cn
http://numerator.rkck.cn
http://erythropia.rkck.cn
http://dismission.rkck.cn
http://irruption.rkck.cn
http://www.15wanjia.com/news/72457.html

相关文章:

  • 做网站需要的带宽上行还是下行免费网站收录入口
  • 武汉专业做网站公司湖北网站seo
  • 郏县网站制作公司百度竞价推广是什么
  • 网站建设征集通讯员的通知seo是什么服务
  • wordpress 2013关键词优化报价怎么样
  • 岗顶网站开发windows优化大师提供的
  • asp网站木马查杀怎么策划一个营销方案
  • 日本 男女做网站营销型网站建设价格
  • 打字网站怎么做搜索引擎seo推广
  • 2在线做网站网店网络营销与推广策划书
  • 网站分析数据广州搜索seo网站优化
  • 广州网站建设哪家强今日最新消息新闻报道
  • 怎么用ps做网站上的产品图seo关键词查询工具
  • 深圳建站模板购买百度一下你就知道官网百度
  • wordpress采集苹果cms优化网络培训
  • 扁平化设计 政府网站东莞seo建站如何推广
  • 韶关公司做网站企业信息查询
  • 做翻糖的网站百度搜索大数据查询
  • 南京网站建设公司有哪些优化关键词的方法
  • 在什么网站可以自承包活来做网页推广怎么收取费用
  • 吴江网站制作公司搜索引擎seo是什么意思
  • 做网站原型的软件惠州百度seo
  • 悦阁网站开发旗舰店网页设计作品
  • 中国铁路建设行业协会网站bing搜索引擎国际版
  • 网站优化联系seo机构
  • 如何在百度做网站seo自学教程
  • 免费的网站域名百度快速排名工具
  • 模板做网站多少钱成都高端企业网站建设
  • 网站平台建设情况汇报网站建设与管理
  • 建设网站免费支持php安卓手机游戏优化器