文档章节

golang 并发中全局唯一操作

304158
 304158
发布于 06/21 09:53
字数 168
阅读 11
收藏 0
package main

// go 携程共享 数据
// 加锁解锁操作
// 同步锁
import (
	"sync"
	"fmt"
)
// 创建Once结构
var once = sync.Once{}

func computed(data *int, lock *sync.Mutex) {
	once.Do(Echo) // 全局唯一操作
	lock.Lock()   // 加锁霸占数据
	*data++
	fmt.Println(*data)
	lock.Unlock() // 解锁让出数据
}
func Echo() {
	fmt.Println("全局唯一操作")
}

func main() {
	var data int = 0
	lock := &sync.Mutex{}
	for i := 0; i < 10; i++ { // 启动10个携程
		go computed(&data, lock) // 并发中只执行一次 Echo 函数 once.Do(Echo)全局唯一操作
	}

	for {
		lock.Lock()
		c := data
		lock.Unlock()
		if c >= 10 {
			fmt.Println("val=", data, "exit")
			break
		}
	}
}

 

© 著作权归作者所有

共有 人打赏支持
304158
粉丝 1
博文 105
码字总数 30016
作品 0
大兴安岭
golang连接mysql操作及动态连接池设置

golang本身没有提供连接mysql的驱动,但是定义了标准接口供第三方开发驱动。这里连接mysql可以使用第三方库,第三方库推荐使用https://github.com/Go-SQL-Driver/MySQL这个驱动,更新维护都比...

mickelfeng
03/02
0
0
golang中的race检测

golang中的race检测 由于golang中的go是非常方便的,加上函数又非常容易隐藏go。 所以很多时候,当我们写出一个程序的时候,我们并不知道这个程序在并发情况下会不会出现什么问题。 所以在本...

王二狗子11
01/07
0
0
内存 kv 数据库--Xedis

Xedis 是一个内存kv数据库 你可曾觉得: - redis的Keys命令性能太低? - DEL命令不够好用、不支持pattern? - 支持的数据结构太少,不能满足业务需求? 等等各种不尽如人意、不够契合业务场景...

Li_Mr
2017/03/27
802
0
开源NewSQL – CockroachDB在百度内部的应用与实践

NewSQL起源 对于MySQL、Oracle、PostgreSQL这样的单机数据库,随着数据量的增长在计算容量和存储容量上都会出现问题。于是后续又推出了基于中间件或者NoSQL的方案,但是都并非完美,比如中间...

技术小能手
05/17
0
0
Goroutine + Channel 实践

goroutine不同于thread,threads是操作系统中的对于一个独立运行实例的描述,不同操作系统,对于thread的实现也不尽相同;但是,操作系统并不知道goroutine的存在,goroutine的调度是有Golan...

黑神领主
2016/12/10
60
0

没有更多内容

加载失败,请刷新页面

加载更多

ReentrantLock_可重入

package cunrent;import java.util.Calendar;import java.util.concurrent.locks.ReentrantLock;public class TestReentrantLock { public static void main(String[] args......

noteman
38分钟前
2
0
CentOS7下安装mysql5.7

1、安装YUM Repo 由于CentOS 的yum源中没有mysql,需要到mysql的官网下载yum repo配置文件。 wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm 然后进行repo的安...

JungleKing
46分钟前
2
0
DevExpress v18.1新版亮点——DevExtreme篇(三)

用户界面套包DevExpress v18.1日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容。本文将介绍了DevExtreme JavaScript Controls v18.1 的新功能,快来下载试用新版本!点击下载...

Miss_Hello_World
47分钟前
1
0
LoadRunner 安装

如果安装LoadRunner 11时弹窗提示"Micosoft Visual C++ 2005 SP1 可再发行组件包(X86):'命令行选项语法错误。键入命令 / ? 可获得帮助信息'"。或者弹窗提示"此计算机缺少 vc2005_sp1_wit...

ww1234
56分钟前
1
0
两个时间段相隔自然月Util

public class DateUtil { public static int getDay(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); return calend......

木九天
59分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部