[Go] golang原子函数锁住共享资源

[Go] golang原子函数锁住共享资源

					<div> 
														 陶士涵															
														 2024-10-15 05:23:05 

				</div>
									<pre>package main

import (

&#34;fmt&#34;<br/>
&#34;runtime&#34;<br/>
&#34;sync&#34;<br/>
&#34;sync/atomic&#34;<br/>

) var (

//全局变量<br/>
counter int64<br/>
//计数信号量<br/>
wg sync.WaitGroup<br/>

) func main() {

fmt.Println(&#34;hello&#34;)<br/>
//计数加2,等待两个goroutine<br/>
wg.Add(2)<br/>
go incCounter()<br/>
go incCounter()<br/>
//主goroutine等待子goroutine结束<br/>
wg.Wait()<br/>
fmt.Println(&#34;最终counter值:&#34;, counter)<br/>

} //增加counter的值函数
func incCounter() {

//函数结束,减小信号量<br/>
defer wg.Done()<br/>
for count := 0; count &lt; 2; count++ {<br/>
	//安全的对counter加1<br/>
	atomic.AddInt64(&amp;counter, 1)<br/>
	//强制调度器必须切换<br/>
	runtime.Gosched()<br/>
}<br/>

}

														<div>