p "github.com/qydysky/part"
m "github.com/qydysky/part/msgq"
+ s "github.com/qydysky/part/signal"
)
var (
o.MQ = m.New(10)
o.MQ.Pull_tag(map[string]func(interface{})(bool){
`block`:func(data interface{})(bool){
- if v,ok := data.(chan struct{});ok{close(v)}
+ if v,ok := data.(*s.Signal);ok{v.Done()}
return false
},
`L`:func(data interface{})(bool){
},
})
{//启动阻塞
- b := make(chan struct{})
- i := true
- for i {
- select {
- case <-b:i = false
- case <-time.After(time.Duration(20)*time.Millisecond):o.MQ.Push_tag(`block`,b)
- }
+ b := s.Init()
+ for b.Islive() {
+ o.MQ.Push_tag(`block`,b)
+ time.Sleep(time.Duration(20)*time.Millisecond)
}
}
return
//Block 阻塞直到本轮日志输出完毕
func (I *Log_interface) Block(timeout int) (O *Log_interface) {
O=I
- b := make(chan struct{})
+ b := s.Init()
O.MQ.Push_tag(`block`,b)
- select {
- case <-b:
- case <-time.After(time.Duration(timeout)*time.Millisecond):
- }
+ b.Wait()
return
}