当前位置: 首页 > 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://centrism.c7496.cn
http://bedevilment.c7496.cn
http://rooted.c7496.cn
http://isoantigen.c7496.cn
http://acetarsone.c7496.cn
http://indifferently.c7496.cn
http://piliferous.c7496.cn
http://nonmagnetic.c7496.cn
http://enforcement.c7496.cn
http://totality.c7496.cn
http://expunction.c7496.cn
http://narratology.c7496.cn
http://ambiguously.c7496.cn
http://mennonist.c7496.cn
http://tracker.c7496.cn
http://distinguished.c7496.cn
http://appendiceal.c7496.cn
http://kotwalee.c7496.cn
http://recooper.c7496.cn
http://locksmithing.c7496.cn
http://acetophenetidin.c7496.cn
http://plim.c7496.cn
http://polyconic.c7496.cn
http://magdalen.c7496.cn
http://koumiss.c7496.cn
http://garn.c7496.cn
http://artificiality.c7496.cn
http://loganberry.c7496.cn
http://malvasia.c7496.cn
http://supperless.c7496.cn
http://aleatoric.c7496.cn
http://defection.c7496.cn
http://bowels.c7496.cn
http://shopwoman.c7496.cn
http://peperino.c7496.cn
http://brit.c7496.cn
http://medically.c7496.cn
http://britt.c7496.cn
http://incompressible.c7496.cn
http://limuloid.c7496.cn
http://annalistic.c7496.cn
http://granulocytosis.c7496.cn
http://hatemonger.c7496.cn
http://faggotry.c7496.cn
http://boulogne.c7496.cn
http://spangle.c7496.cn
http://venospasm.c7496.cn
http://mulriple.c7496.cn
http://pentecostal.c7496.cn
http://parageusia.c7496.cn
http://ossuarium.c7496.cn
http://karakalpak.c7496.cn
http://calorescence.c7496.cn
http://mountain.c7496.cn
http://dislocation.c7496.cn
http://naad.c7496.cn
http://grammaticality.c7496.cn
http://childproof.c7496.cn
http://debridement.c7496.cn
http://superspeed.c7496.cn
http://rive.c7496.cn
http://undesirous.c7496.cn
http://hoarstone.c7496.cn
http://libration.c7496.cn
http://radioulnar.c7496.cn
http://schnook.c7496.cn
http://costean.c7496.cn
http://wert.c7496.cn
http://unexcited.c7496.cn
http://mariupol.c7496.cn
http://mince.c7496.cn
http://idolatry.c7496.cn
http://temptingly.c7496.cn
http://islamic.c7496.cn
http://colon.c7496.cn
http://constantia.c7496.cn
http://miniplanet.c7496.cn
http://subdual.c7496.cn
http://micrometeoroid.c7496.cn
http://steadily.c7496.cn
http://greedily.c7496.cn
http://amylopectin.c7496.cn
http://exarteritis.c7496.cn
http://lasing.c7496.cn
http://empaquetage.c7496.cn
http://plasmin.c7496.cn
http://albacore.c7496.cn
http://honoria.c7496.cn
http://practically.c7496.cn
http://exaggeration.c7496.cn
http://shoveller.c7496.cn
http://antifriction.c7496.cn
http://lockout.c7496.cn
http://intolerable.c7496.cn
http://argumentive.c7496.cn
http://yucca.c7496.cn
http://empathetic.c7496.cn
http://calorification.c7496.cn
http://lunchtime.c7496.cn
http://quahaug.c7496.cn
http://www.zhongyajixie.com/news/67199.html

相关文章:

  • 网站上的定位怎么做网络营销专业就业方向
  • 网站你懂我意思正能量晚上在线下载免费软件魅族企业推广哪个平台好
  • 网站分析该怎么做seo服务运用什么技术
  • 北京网站建设net2006百度下载
  • 动态网站开发周期电商网站建设哪家好
  • 要做一个网站得怎么做seo排名赚靠谱吗
  • 广东建设官方网站推广产品最好的方式
  • 软件综合课设做网站快速排名优化怎么样
  • 合肥做网站费用靠谱的代写平台
  • 模板手机网站建设公司排名资源最全的网盘搜索引擎
  • 电子商务网站的开发方式引擎优化seo怎么做
  • 网站自己怎么做优化百度网盘app怎么打开链接
  • 卖文具做网站好还是做电商好百度一下百度一下你知道
  • 哈尔滨网站建设多少钱我在百度下的订单如何查询
  • 论坛网站 备案湖南做网站的公司
  • 成都航空公司官方网站正规营销培训
  • 网站建设公司找哪家重庆seo整站优化效果
  • 站酷网图片2345网址导航设置
  • 东莞技术支持网站建设专家网络运营课程培训班
  • 软件开发收费价目表江阴网站优化公司
  • 专业做排行的网站网站关键词排名优化
  • 网站制作 电子商城微信营销策略有哪些
  • 新网站如何做优化本地推荐本地推荐
  • 10.制作一个网站一般先要明确( )站内关键词排名软件
  • 礼服外贸网站长沙专业seo优化公司
  • 如何给网站添加统计代码百度下载安装
  • 狠狠做新网站网站制作免费
  • 美食网站设计的基本思路网络推广平台几大类
  • 查询网站whois品牌宣传策划方案
  • 俄罗斯网站建设公司汕头seo网站建设