From: qydysky Date: Sat, 26 Sep 2020 03:36:37 +0000 (+0800) Subject: 82 X-Git-Tag: v0.0.2~4 X-Git-Url: http://127.0.0.1:8081/?a=commitdiff_plain;h=76a93d21bf41b4575fcc781c4b2765c999b98549;p=part%2F.git 82 --- diff --git a/Signal.go b/Signal.go new file mode 100644 index 0000000..0dd25b3 --- /dev/null +++ b/Signal.go @@ -0,0 +1,27 @@ +package part + +type signal struct{ + v chan struct{} +} + +func Signal() (o *signal) { + return &signal{v:make(chan struct{})} +} + +func (i *signal) Wait() { + <-i.v +} + +func (i *signal) Done() { + if i.Islive() {close(i.v)} +} + +func (i *signal) Islive() (islive bool) { + select { + case <-i.v:; + default: + if i.v == nil {break} + islive = true + } + return +} \ No newline at end of file