代码拉取完成,页面将自动刷新
// GLMstackpp
package stack
import (
"sync/atomic"
"time"
)
// 记录为入栈时操作
func (s *GLMstack) pushrecord() {
atomic.AddInt64(&s.pushn, 1)
for {
rw := atomic.LoadInt64(&s.pp)
if rw == pushpp { //正在入栈操作
return
} else if rw == 0 {
bol := atomic.CompareAndSwapInt64(&s.pp, 0, pushpp)
if bol == true { //无操作
return
} else { //正在出栈操作
time.Sleep(time.Duration(s.poptime * s.popn))
}
} else { //正在出栈操作
time.Sleep(time.Duration(s.poptime * s.popn))
}
}
}
// 入栈已完成
func (s *GLMstack) pushok() {
n := atomic.AddInt64(&s.pushn, -1)
if n == 0 {
atomic.StoreInt64(&s.pp, 0)
}
}
// 出栈已完成
func (s *GLMstack) popok() {
n := atomic.AddInt64(&s.popn, -1)
if n == 0 {
atomic.StoreInt64(&s.pp, 0)
}
}
// 记录为出栈时操作
func (s *GLMstack) poprecord() {
atomic.AddInt64(&s.popn, 1)
for {
rw := atomic.LoadInt64(&s.pp)
if rw == poppp { //正在出栈操作
return
} else if rw == 0 {
bol := atomic.CompareAndSwapInt64(&s.pp, 0, poppp)
if bol == true { //无操作
return
} else {
time.Sleep(time.Duration(s.pushtime * s.pushn))
}
} else {
time.Sleep(time.Duration(s.pushtime * s.pushn))
}
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。