]> 127.0.0.1 Git - part/.git/commitdiff
82
authorqydysky <qydysky@foxmail.com>
Sat, 26 Sep 2020 03:36:37 +0000 (11:36 +0800)
committerqydysky <qydysky@foxmail.com>
Sat, 26 Sep 2020 03:36:37 +0000 (11:36 +0800)
Signal.go [new file with mode: 0644]

diff --git a/Signal.go b/Signal.go
new file mode 100644 (file)
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