首页 > 其他分享 >go 读写锁与互斥锁

go 读写锁与互斥锁

时间:2022-08-17 22:22:06浏览次数:52  
标签:10 int lock 读写 互斥 time go

go 协程 读写锁 和互斥锁 使用场景   读多写少 使用读写锁 读少写多 使用互斥锁   读写锁的性能是互斥锁的100倍   package main
import (   "fmt"   "math/rand"   "sync"   "sync/atomic"   "time" )
func main() {   testMap() }
var lock sync.Mutex //互斥锁 var rwLock sync.RWMutex //读写锁
func testMap() {   var a map[int]int   a = make(map[int]int, 5)   var count int32
  [8] = 10   a[3] = 10   a[2] = 10   a[1] = 10   a[18] = 10   //读写锁 使用场景 读多写小   //互斥锁 写很多 就得用互斥锁   for i := 0; i < 2; i++ {     go func(b map[int]int) {       // lock.Lock()  //加互斥锁       rwLock.Lock() //加读写锁       b[8] = rand.Intn(100)       time.Sleep(10 * time.Millisecond)       // lock.Unlock()  //解互斥锁       rwLock.Unlock() //解读写锁     }(a)   }
for i := 0; i < 100; i++ {   go func(b map[int]int) {     for {       // lock.Lock()       rwLock.RLock() //加锁 读写锁       // fmt.Println(a)       time.Sleep(time.Millisecond)       // lock.Unlock()       rwLock.RUnlock() //解锁       atomic.AddInt32(&count, 1) //原子操作 加1     }
  }(a) }   time.Sleep(3 * time.Second)   fmt.Println(count)   // lock.Lock() //加锁   // fmt.Println(a)
}

标签:10,int,lock,读写,互斥,time,go
From: https://www.cnblogs.com/chenweihao/p/16596993.html

相关文章

  • mongo容器忘记了root用户账号密码
    需要执行root账号的操作时错:Error:notauthorizedonadmintoexecutecommand轻松三步解决1.关闭认证,需要去该Mongo服务的部署信息去掉"--auth",然后再去部署2.直接用mo......
  • pymongo.errors.ServerSelectionTimeoutError
    今天使用pymongo连接mongo数据库报错pymongo.errors.ServerSelectionTimeoutError:ip:端口:timedout,Timeout:30s,TopologyDescription:<TopologyDescriptionid:......
  • "errmsg" : "Got invalid BSON from external server while reading from cursor
    使用db.copyDatabase报错"errmsg":"GotinvalidBSONfromexternalserverwhilereadingfromcursor::causedby::InvalidBSON:CannotusedecimalBSONtypewh......
  • LaTeX algorithm2e if-elseif-else
    \uIf{if-condition}{  if-content\; } \uElseIf{elseif-condition}{  elseif-content} \Else{  else-content} 感谢 https://www.cnblogs.com/su......
  • 高可用mongodb集群(分片+副本):性能测试
    Yahoo!CloudServingBenchmark(YCSB)是一个Java语言实现的用于云端或者服务器端的数据库性能测试工具,其内部涵盖了常见的NoSQL数据库产品,如Cassandra、MongoDB、HBase......
  • Django连接MySQL与正反向迁移命令
    目录连接MySQL方法一:pymysql连接方法二:mysqlclient迁移命令连接MySQL方法一:pymysql连接第一步:修改settings.py配置文件中的DATABASES:DATABASES={'default':{......
  • MongoDB基础
    1.业务应用场景1)Highperformance:对数据库高并发读写的需求2)HugeStorage:对海量数据的高效存储和访问的需求3)HighScalability&&HighAvaliablity:对数据的高可扩展性......
  • Vue+Koa+MongoDB从零打造一个任务管理系统
    大概是在18年的时候,当时还没有疫情。当时工作中同时负责多个项目,有PC端运营管理后台的,有移动端M站的,有微信小程序的,每天git分支切到头昏眼花,每个需求提测需要发送邮......
  • 代码审计(Java)——WebGoat_SqlInjection
    一、SqlInjection_introduction1.这里level1-8就不说了,都是介绍+简单的sql语句,直接上level9这里可以看到,是给出了选择框的一道题,OWASP真不错,生怕你不会哈哈~......
  • 服务器部署 Vue 和 Django 项目的全记录
    本篇记录我在一个全新服务器上部署Vue和Django前后端项目的全过程,内容包括服务器初始配置、安装Django虚拟环境、pythonweb服务器uWSGI和反向代理Nginx的使用,......