GO语言channel的读写超时处理

原创
2017/12/18 15:51
阅读数 3.7K

百度一堆都说的是读超时的示例,,某些场合下需要写超时。这里给出一个写超时的示例。能用代码的就不废话了:

package main

import (
	"fmt"
	"time"
)

func main() {
		work := make(chan bool,1)
		// work <- false
		timeout := make(chan bool, 1)
		go func() {
			time.Sleep(time.Second)
			timeout <- true
		}()
		for {
			select {
			case <-timeout:
				fmt.Println("timeout.")
				return
			case work <- true:
				fmt.Println("send...")
			}
		}
}

 保存文件运行go run file.go输出

send...
timeout.

去掉  // work <- false的注释去掉,再次运行输出:

timeout.

case work <- true 表示如果写入成功就执行fmt.Println("send...")。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部