文档章节

golang 并发中全局唯一操作

304158
 304158
发布于 06/21 09:53
字数 168
阅读 8
收藏 0
点赞 0
评论 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
博文 99
码字总数 27558
作品 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
一周 Go World 新鲜事[Asta 优选]

01 gkvdb v1.81 发布,Go 语言嵌入式 K/V 数据库 gkvdb是Go语言开发的基于DRH(Deep-Re-Hash)深度哈希分区算法的高性能Key-Value嵌入式数据库。 v1.81的具体改进: 1、增加多表支持,将底层...

ra681t58cjxsgckj31
2017/12/08
0
0
Goroutine + Channel 实践

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

黑神领主
2016/12/10
60
0
当我们在谈论Golang的并发时,实际上在谈论什么?

并发(Concurrency) 大家都知道,通常情况下一个简单的串行执行的程序在计算机内部被执行的时候是按照指令的顺序一步一步执行,这种情况下CPU在每一条指令必须执行结束才会有下一条指令被执...

艾文西
07/09
0
0
关于Golang和JVM中并发模型实现的探讨

说起来貌似有好久没有更新过博客了,主要是因为最近一段时间都在各种看书和看源码,所做的记录大部分也都是属于读书笔记性质,所以就没有整理到博客上来,之后会陆续整理一些东西上来。 引子...

tantexian
2016/08/19
56
0
在windows下配置Eclipse + go环境 Eclipse平台下配置Go语言开发环境(Win

mongoDB: mongoDB数据库基本操作 Programming in Go (Golang) – Setting up a Mac OS X Development Environment 造完美的go开发环境 在windows下配置Eclipse + go环境 Eclipse平台下配置G......

d_watson
2016/06/03
26
0
golang入门学习笔记(四)

作者: 一字马胡 转载标志 【2017-11-25】 更新日志 日期 更新内容 备注 2017-11-25 新建文章 go语言入门学习笔记(四) golang入门学习笔记系列 golang入门学习笔记(一) golang入门学习笔...

一字马胡
2017/11/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

云拿 无人便利店

附近(上海市-航南路)开了家无人便利店.特意进去体验了一下.下面把自己看到的跟大家分享下. 经得现场工作人员同意后拍了几张照片.从外面看是这样.店门口的指导里强调:不要一次扫码多个人进入....

周翔
8分钟前
0
0
Java设计模式学习之工厂模式

在Java(或者叫做面向对象语言)的世界中,工厂模式被广泛应用于项目中,也许你并没有听说过,不过也许你已经在使用了。 简单来说,工厂模式的出现源于增加程序序的可扩展性,降低耦合度。之...

路小磊
22分钟前
0
0
npm profile 新功能介绍

转载地址 npm profile 新功能介绍 npm新版本新推来一个功能,npm profile,这个可以更改自己简介信息的命令,以后可以不用去登录网站来修改自己的简介了 具体的这个功能的支持大概是在6这个版...

durban
33分钟前
0
0
Serial2Ethernet Bi-redirection

Serial Tool Serial Tool is a utility for developing serial communications, custom protocols or device testing. You can set up bytes to send accordingly to your protocol and save......

zungyiu
39分钟前
0
0
python里求解物理学上的双弹簧质能系统

物理的模型如下: 在这个系统里有两个物体,它们的质量分别是m1和m2,被两个弹簧连接在一起,伸缩系统为k1和k2,左端固定。假定没有外力时,两个弹簧的长度为L1和L2。 由于两物体有重力,那么...

wangxuwei
54分钟前
0
0
apolloxlua 介绍

##项目介绍 apolloxlua 目前支持javascript到lua的翻译。可以在openresty和luajit里使用。这个工具分为两种模式, 一种是web模式,可以通过网页使用。另外一种是tool模式, 通常作为大规模翻...

钟元OSS
今天
0
0
Mybatis入门

简介: 定义:Mybatis是一个支持普通SQL查询、存储过程和高级映射的持久层框架。 途径:MyBatis通过XML文件或者注解的形式配置映射,实现数据库查询。 特性:动态SQL语句。 文件结构:Mybat...

霍淇滨
今天
0
0
开发技术瓶颈期,如何突破

前言 读书、学习的那些事情,以前我也陆续叨叨了不少,但总觉得 “学习方法” 就是一个永远在路上的话题。个人的能力、经验积累与习惯方法不尽相同,而且一篇文章甚至一本书都很难将学习方法...

_小迷糊
今天
0
0
安装tensorflow-XXX报错

报错: tensorflow-0.5.0-cp27-none-linux_x86_64.whl is not a supported wheel on this platform. 解决: wget https://bootstrap.pypa.io/get-pip.py sudo python2.7 get-pip.py sudo p......

Yao--靠自己
今天
0
0
JVM学习手册(一):JVM模型

一直从事JAVA开发,天天和JVM打交道,仔细想想对JVM还真的不是特别了解,实在是不应该.周六看了许多资料,也算有点心得,记录一下。 JVM内存模型分为5个区域:方法区,堆,虚拟机栈,本地方法栈,程序计...

勤奋的蚂蚁
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部