mirror of
https://github.com/charlienet/go-mixed.git
synced 2026-03-05 21:19:18 +08:00
spin locker
This commit is contained in:
@@ -11,6 +11,10 @@ func NewSpinLocker() *spinLock {
|
|||||||
return new(spinLock)
|
return new(spinLock)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (sl *spinLock) TryLock() bool {
|
||||||
|
return atomic.CompareAndSwapUint32((*uint32)(sl), 0, 1)
|
||||||
|
}
|
||||||
|
|
||||||
func (sl *spinLock) Lock() {
|
func (sl *spinLock) Lock() {
|
||||||
for !atomic.CompareAndSwapUint32((*uint32)(sl), 0, 1) {
|
for !atomic.CompareAndSwapUint32((*uint32)(sl), 0, 1) {
|
||||||
runtime.Gosched()
|
runtime.Gosched()
|
||||||
|
|||||||
Reference in New Issue
Block a user