1 Star 0 Fork 0

mosache / go-zero

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
spinlock.go 326 Bytes
一键复制 编辑 原始数据 按行查看 历史
kevwan 提交于 2020-07-26 17:09 . initial import
package syncx
import (
"runtime"
"sync/atomic"
)
type SpinLock struct {
lock uint32
}
func (sl *SpinLock) Lock() {
for !sl.TryLock() {
runtime.Gosched()
}
}
func (sl *SpinLock) TryLock() bool {
return atomic.CompareAndSwapUint32(&sl.lock, 0, 1)
}
func (sl *SpinLock) Unlock() {
atomic.StoreUint32(&sl.lock, 0)
}
1
https://gitee.com/mosache/go-zero.git
git@gitee.com:mosache/go-zero.git
mosache
go-zero
go-zero
dfb45c801a6c

搜索帮助

53164aa7 5694891 3bd8fe86 5694891