Go语言,用原子函数atomic避免资源竞争

简介: 下一步应该是互斥锁了。 package main import ( "fmt" "runtime" "sync" "sync/atomic" ) var ( counter int64 wg sync.

下一步应该是互斥锁了。

package main

import (
	"fmt"
	"runtime"
	"sync"
	"sync/atomic"
)

var (
	counter int64
	wg sync.WaitGroup
)

func main() {
	wg.Add(2)
	
	fmt.Println("Create Goroutines")
	go incCounter(1)
	go incCounter(2)
	
	fmt.Println("Waiting To Finish")
	wg.Wait()
	
	fmt.Println("Final Counter:", counter)
}

func incCounter(id int) {
	defer wg.Done()
	for count := 0; count < 2; count++ {
		atomic.AddInt64(&counter, 1)
		runtime.Gosched()

	}
}

  

目录
相关文章
|
3月前
|
存储 安全 Java
【Golang】(4)Go里面的指针如何?函数与方法怎么不一样?带你了解Go不同于其他高级语言的语法
结构体可以存储一组不同类型的数据,是一种符合类型。Go抛弃了类与继承,同时也抛弃了构造方法,刻意弱化了面向对象的功能,Go并非是一个传统OOP的语言,但是Go依旧有着OOP的影子,通过结构体和方法也可以模拟出一个类。
253 1
|
4月前
|
存储 Java Go
对比Java学习Go——函数、集合和OOP
Go语言的函数支持声明与调用,具备多返回值、命名返回值等特性,结合`func`关键字与类型后置语法,使函数定义简洁直观。函数可作为一等公民传递、赋值或作为参数,支持匿名函数与闭包。Go通过组合与接口实现面向对象编程,结构体定义数据,方法定义行为,接口实现多态,体现了Go语言的简洁与高效设计。
|
5月前
|
Cloud Native 安全 Java
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
340 1
|
5月前
|
Cloud Native Go API
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
431 0
|
5月前
|
Cloud Native Java Go
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
289 0
|
5月前
|
Cloud Native Java 中间件
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
276 0
|
5月前
|
Cloud Native Java Go
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
356 0
go语言函数、方法、闭包(详解)
go语言函数、方法、闭包(详解)
|
人工智能 Java 编译器
【七天入门Go语言】函数 & 方法 & 接口 | 第三天
目录 1. 函数 2. 方法 3. 接口 最后
261 0
【七天入门Go语言】函数 & 方法 & 接口 | 第三天
|
程序员 编译器 Go
关于Go语言中的函数方法
关于Go语言中的函数方法 方法是什么 函数和方法的区别 Go中的“多态”
201 0