Browse Source

Update README.md

Vova Tkach 5 years ago
parent
commit
83c810e5d6
1 changed files with 65 additions and 0 deletions
  1. 65 0
      README.md

+ 65 - 0
README.md

@@ -1,2 +1,67 @@
 # golang-worker
 Simple background worker
+
+## How to use
+```
+go get github.com/vladimirok5959/golang-worker
+```
+```
+package main
+
+import (
+	"context"
+	"fmt"
+	"time"
+
+	"github.com/vladimirok5959/golang-worker/worker"
+)
+
+func main() {
+	fmt.Printf("Start!\n")
+
+	w1 := worker.New(func(ctx context.Context, w *worker.Worker, o *[]worker.Iface) {
+		fmt.Printf("Worker #1 one tick\n")
+		for i := 0; i < 1000; i++ {
+			select {
+			case <-ctx.Done():
+				fmt.Printf("Worker #1 fine I will shutdown!\n")
+				return
+			default:
+				time.Sleep(1 * time.Millisecond)
+			}
+		}
+	}, nil)
+
+	w2 := worker.New(func(ctx context.Context, w *worker.Worker, o *[]worker.Iface) {
+		fmt.Printf("Worker #2 one tick\n")
+		for i := 0; i < 1000; i++ {
+			select {
+			case <-ctx.Done():
+				fmt.Printf("Worker #2 fine I will shutdown!\n")
+				return
+			default:
+				time.Sleep(1 * time.Millisecond)
+			}
+		}
+	}, nil)
+
+	_ = worker.New(func(ctx context.Context, w *worker.Worker, o *[]worker.Iface) {
+		fmt.Printf("Worker #3 one tick\n")
+		time.Sleep(2 * time.Second)
+		fmt.Printf("Worker #3 Exit\n")
+		w.Shutdown(nil)
+	}, nil)
+
+	time.Sleep(3 * time.Second)
+
+	w1.Shutdown(nil)
+
+	if err := w2.Shutdown(nil); err != nil {
+		fmt.Printf("Worker #2 shutdown error: %s\n", err.Error())
+	}
+
+	time.Sleep(1 * time.Second)
+
+	fmt.Printf("End!\n")
+}
+```