Jelajahi Sumber

Update 14.6.md

glight2000 10 tahun lalu
induk
melakukan
0351c39f67
1 mengubah file dengan 18 tambahan dan 0 penghapusan
  1. 18 0
      eBook/14.6.md

+ 18 - 0
eBook/14.6.md

@@ -1,5 +1,23 @@
 # 14.6 协程和recover
 
+一个用到`recover`的程序(参见章节13.3)停掉了服务器内部一个失败的协程而不影响其他协程的工作。
+```go 
+func server(workChan <-chan *Work) {
+    for work := range workChan {
+        go safelyDo(work)   // start the goroutine for that work
+    }
+}
+
+func safelyDo(work *Work) {
+    defer func {
+        if err := recover(); err != nil {
+            log.Printf("Work failed with %s in %v", err, work)
+        }
+    }()
+    do(work)
+}
+```
+
 ## 链接
 
 - [目录](directory.md)