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

golang读写锁简单例子

package main

import (
	"fmt"
	"math/rand"
	"sync"
)

var count int           		// 全局变量count
var rwlock sync.RWMutex       	// 全局读写锁 rwlock

func read(n int)  {
	rwlock.RLock()
	fmt.Printf("读 goroutine %d 正在读取数据...\n", n)
	num := count
	fmt.Printf("读 goroutine %d 读取数据结束,读到 %d\n", n, num)
	defer rwlock.RUnlock()
}
func write(n int)  {
	rwlock.Lock()
	fmt.Printf("写 goroutine %d 正在写数据...\n", n)
	num := rand.Intn(1000)
	count = num
	fmt.Printf("写 goroutine %d 写数据结束,写入新值 %d\n", n, num)
	defer rwlock.Unlock()
}
func main()  {

    for i:=0;i<5;i++{
    	go read(i+1)
	}

	for i:=0;i<5;i++{
		go write(i+1)
	}


for{
	;
}
}

 

相关文章:

  • 急问数据结构用c c++描述的区别?
  • golang条件变量的作用并不保证在同一时刻仅有一个协程(线程)访问某个共享的数据资源
  • 华为面试题3
  • golang多个消费者访问共享数据
  • 创建第一个区块001
  • c语言常见出错信息(转)
  • 创建我的第一个区块链002
  • 几种开发工具的特性比较(转载)
  • 添加区块到区块链当中003
  • 很难见得到的一篇关于windows进程的说明书(转载)
  • 补充区块代码更新函数004
  • byte二位数组转换问题005
  • 写在周日的凌晨( 一次思维的对话)
  • 挖矿初出茅庐006
  • blot数据库007
  • [case10]使用RSQL实现端到端的动态查询
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • Android开源项目规范总结
  • dva中组件的懒加载
  • fetch 从初识到应用
  • JavaScript服务器推送技术之 WebSocket
  • java概述
  • LeetCode算法系列_0891_子序列宽度之和
  • use Google search engine
  • Vue.js-Day01
  • Vue--数据传输
  • Webpack 4 学习01(基础配置)
  • Yii源码解读-服务定位器(Service Locator)
  • 关于Flux,Vuex,Redux的思考
  • 驱动程序原理
  • 如何设计一个微型分布式架构?
  • 使用Swoole加速Laravel(正式环境中)
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 小李飞刀:SQL题目刷起来!
  • 异常机制详解
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (java)关于Thread的挂起和恢复
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (补)B+树一些思想
  • (二)pulsar安装在独立的docker中,python测试
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (转)【Hibernate总结系列】使用举例
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转)德国人的记事本
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • .cn根服务器被攻击之后
  • .NET Core 版本不支持的问题