登录
首页 >  Golang >  Go问答

如何中断执行 (*TCPListener) Accept 的 goroutine?

来源:Golang技术栈

时间:2023-04-04 21:35:37 400浏览 收藏

学习Golang要努力,但是不要急!今天的这篇文章《如何中断执行 (*TCPListener) Accept 的 goroutine?》将会介绍到golang等等知识点,如果你想深入学习Golang,可以关注我!我会持续更新相关文章的,希望对大家都能有所帮助!

问题内容

我最近在玩 go 并尝试创建一些服务器来响应 tcp 连接上的客户端。

我的问题是我如何干净地关闭服务器并中断当前在以下调用中“阻塞”的 go-routine

func (*TCPListener) 接受?

根据Accept的文档

Accept 实现了 Listener 接口中的 Accept 方法;它等待下一次调用并返回一个通用的 Conn。

这些错误也很少被记录。

正确答案

这是我一直在寻找的。也许将来会帮助某人。注意使用 select 和 "c" 通道将它与退出通道结合起来

    ln, err := net.Listen("tcp", ":8080")
    if err != nil {
        // handle error
    }
    defer ln.Close()
    for {
        type accepted struct {
            conn net.Conn
            err  error
        }
        c := make(chan accepted, 1)
        go func() {
            conn, err := ln.Accept()
            c 

今天关于《如何中断执行 (*TCPListener) Accept 的 goroutine?》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>