From 76a93d21bf41b4575fcc781c4b2765c999b98549 Mon Sep 17 00:00:00 2001 From: qydysky Date: Sat, 26 Sep 2020 11:36:37 +0800 Subject: [PATCH] 82 --- Signal.go | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 Signal.go 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 -- 2.39.2