登录
首页 >  Golang >  Go问答

在 http 处理程序中执行 Goroutine

来源:Golang技术栈

时间:2023-04-24 20:46:32 257浏览 收藏

golang学习网今天将给大家带来《在 http 处理程序中执行 Goroutine》,感兴趣的朋友请继续看下去吧!以下内容将会涉及到golang等等知识点,如果你是正在学习Golang或者已经是大佬级别了,都非常欢迎也希望大家都能给我建议评论哈~希望能帮助到大家!

问题内容

如果我在 http 处理程序中启动一个 goroutine,它是否会在返回响应后完成?这是一个示例代码:

package main

import (
    "fmt"
    "net/http"
    "time"
)

func worker() {
    fmt.Println("worker started")
    time.Sleep(time.Second * 10)
    fmt.Println("worker completed")
}

func HomeHandler(w http.ResponseWriter, r *http.Request) {
    go worker()
    w.Write([]byte("Hello, World!"))
}

func main() {
    http.HandleFunc("/home", HomeHandler)
    http.ListenAndServe(":8081", nil)
}

在上面的例子中,这个workergoroutine 会在所有情况下完成吗?还是有什么特殊情况无法完成?

正确答案

是的,它会完成,没有什么可以阻止它。

阻止goroutine “从外部” 完成的唯一事情是从main()函数返回(这也意味着完成程序的执行,但这在您的情况下永远不会发生)。以及其他导致不稳定状态的情况,例如内存不足。

以上就是《在 http 处理程序中执行 Goroutine》的详细内容,更多关于golang的资料请关注golang学习网公众号!

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