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

申请学校网站建设申请书angeljs做的网站

申请学校网站建设申请书,angeljs做的网站,自己开平台怎么弄啊,简单网页模板Go基础之锁的初识 当我们的程序就一个线程的时候是不需要用到锁的#xff0c;但是通常我们实际的代码不会是单个线程的#xff0c;所有这个时候就需要用到锁了#xff0c;那么关于锁的使用场景主要涉及到哪些呢#xff1f; 当我们多个线程在读相同的数据的时候则是需要加锁…Go基础之锁的初识 当我们的程序就一个线程的时候是不需要用到锁的但是通常我们实际的代码不会是单个线程的所有这个时候就需要用到锁了那么关于锁的使用场景主要涉及到哪些呢 当我们多个线程在读相同的数据的时候则是需要加锁的当我们的程序既有读又有写的时候更是需要加锁的当我们有多个线程在写的时候同样也是需要加锁互斥锁 互斥锁同一个时刻只有一个线程能够拿到锁 我们先通过一个例子来演示如果当多个线程同时更改一个变量结果会是怎么样不加锁版本 package mainimport (syncfmt )var (//lock sync.Mutexcount intw sync.WaitGroup //用于等待子线程执行完之后退出 )func main() {w.Add(1) // 在调用线程前执行w.addgo func(){for i:0;i100000;i{count}w.Done() //执行完 执行w.Done}()for i :0;i100000;i{count}w.Wait() // 最后执行w.wait等待所有的线程执行完毕fmt.Println(count)} 当我们运行多次就可以发现最后的结果基本不可能是我们先看到的200000我们修改代码代码需要加锁保护的地方加上锁并且这里加的是互斥锁修改后的代码为 package mainimport (syncfmt )var (lock sync.Mutexcount intw sync.WaitGroup //用于等待子线程执行完之后退出 )func main() {w.Add(1) // 在调用线程前执行w.addgo func(){for i:0;i100000;i{lock.Lock()countlock.Unlock()}w.Done() //执行完 执行w.Done}()for i :0;i100000;i{lock.Lock()countlock.Unlock()}w.Wait() // 最后执行w.wait等待所有的线程执行完毕fmt.Println(count)} 这次当我们多次运行的时候就能保证我们每次都能看到我们想要的值200000接下来看读写锁 读写锁 读写锁主要用到读多写少的场景读写锁分为读锁和写锁 如果自己设置了一个写锁那么其他读的线程以及写的线程都拿不到锁这个时候和互斥锁的功能相同如果自己设置了一个读锁那么其他写的线程是拿不到锁的但是其他读的线程都是可以拿到这个锁 我们把上面的例子代码进行更改 package mainimport (syncfmt ) var (rwlock sync.RWMutexw sync.WaitGroupcount int )func main() {w.Add(1)go func(){for i:0;i1000000;i{rwlock.Lock() // 这里定义了一个写锁countrwlock.Unlock()}w.Done()}()for i:0;i1000000;i{rwlock.Lock() // 这里定义了一个写锁countrwlock.Unlock()}w.Wait()fmt.Println(count) } 通过设置写锁我们同样可以实现数据的一致性下面是一个读锁的使用例子 package mainimport (syncfmt )var (rwlock sync.RWMutexw sync.WaitGroupcount int )func main() {w.Add(1)go func(){for i:0;i1000000;i{rwlock.Lock() // 这里定义了一个写锁countrwlock.Unlock()}w.Done()}()for i:0;i16;i{w.Add(1)go func(){rwlock.RLock() //这里定义了一个读锁fmt.Println(count)rwlock.RUnlock() //释放读锁w.Done()}()}w.Wait()fmt.Println(count) } Go中的原子操作 原子操作我们则不需加锁也能保证数据的一致性并且如果只是计算那么原子操作则是最快的 实例代码 package mainimport (sync//timesync/atomicfmt )var (w sync.WaitGroupcount int32 )func main() {w.Add(1)//start : time.Now().UnixNano()go func() {for i:0;i1000000;i{atomic.AddInt32(count,1)}w.Done()}()for i:0;i1000000;i{atomic.AddInt32(count,1)}w.Wait()//end : time.Now().UnixNano()//fmt.Println((end- start)/1000/1000)fmt.Println(count) }   所有的努力都值得期许每一份梦想都应该灌溉 转载于:https://www.cnblogs.com/flying1819/articles/8832749.html
http://www.zqtcl.cn/news/827030/

相关文章:

  • 湖州建设局网站青海最新信息
  • 长沙专业做网站的公司制作网站赚钱吗
  • 局域网网站架设软件徐州地产开发公司招聘
  • wordpress无法添加媒体百度官网优化
  • 安徽教育云网站建设贾汪网站开发
  • 商业设计网站推荐用图片设置网站首页
  • 同ip网站有什么危害软文营销的特点有哪些
  • 用动易做的校园网站成品网站 免费试用
  • 没有网站做cpa怎么赚钱网站模板中企动力
  • 商会联盟网站建设方案免费的个人空间建网站
  • 徐州网站建设4个人网站设计师
  • 易企秀网站怎么做轮播图装饰设计公司wordpress主题
  • 网站建设搜索优wordpress the
  • 怎么做点图片连接网站北京大学网络服务
  • 家具制作网站台州网页设计公司
  • 优化网站 提高查询建设综合购物网站
  • 农产品网站设计方案湖南长沙网站建设公司
  • 网站过期查询服务器放网站吗
  • 郑州做网站的外包公司有哪些大连seo排名
  • 写小说的网站自己做封面2008年做的网站
  • 哈尔滨做网站哪家好强企业邮箱登录入口163
  • 网站点击率原因学php到做网站要多久
  • 哪里有创建网站的长沙网站seo技巧
  • 影楼公共网站wordpress提交360
  • 哪有做网站东莞中堂网站建设
  • 什么叫域名访问网站网络运营管理
  • 深圳网络推广网站泰安网站建设公司
  • 淄博网站建设铭盛信息如何注册一个app平台
  • 深圳网站的建设维护公司成功的网站必须具备的要素
  • wordpress主题站主题小型企业网站的设计与实现