初级会员
  • 第 18528 位会员
  • colinrs
  • 2018-05-10 14:34:41
  • Offline
  • 20 35

最近发布的主题

    暂无

最近发布的文章

    暂无

最近分享的资源

    暂无

最近发布的项目

    暂无

最近的评论

  • 然后呢?
  • Ubuntu: ```shell echo "Y2hlbnhpYW5nLmxqYyNhbGliYWJhLWluYy5jb20K" | base64 -d| sed 's/#/@/' ```
  • task没有超时。把task sleep 时间改成大于4s,就可以看到超时了。 ```golang package main import ( "context" "fmt" "time" ) func main() { ctx, cancel := context.WithTimeout(context.TODO(), time.Second*3) defer cancel() // 防止任务比超时时间短导致资源未释放 // 启动协程 go task(ctx) // 主协程需要等待,否则直接退出 time.Sleep(time.Second * 4) } func task(ctx context.Context) { ch := make(chan struct{}, 0) // 真正的任务协程 go func() { // 模拟10秒耗时任务 这里修改成大于4秒 time.Sleep(time.Second * 10) ch <- struct{}{} }() select { case <-ch: fmt.Println("done") case <-ctx.Done(): fmt.Println("timeout") } } ```