1
0
mirror of https://github.com/charlienet/go-mixed.git synced 2025-07-17 16:12:42 +08:00

添加锁

This commit is contained in:
2023-11-06 10:09:40 +08:00
parent 5428b530b2
commit 330d9f78d3

View File

@ -1,6 +1,9 @@
package store
import "fmt"
import (
"fmt"
"sync"
)
// 号段
type Segment struct {
@ -8,22 +11,35 @@ type Segment struct {
end int64
current int64
reback bool
mu sync.RWMutex
}
func (s *Segment) Allot() int64 {
s.mu.Lock()
defer s.mu.Unlock()
s.current++
return s.current
}
func (s *Segment) IsEnding() bool {
s.mu.Lock()
defer s.mu.Unlock()
return (s.current - s.start) > (s.end - s.current)
}
func (s *Segment) IsEmpty() bool {
s.mu.Lock()
defer s.mu.Unlock()
return s.current == s.end
}
func (s *Segment) Reback() bool {
s.mu.Lock()
defer s.mu.Unlock()
// println("回旋确认:", s.reback, s.current == (s.start+1))
return s.reback && s.current == (s.start+1)
}