gpt4 book ai didi

Golang 在不等待的情况下执行异步任务

转载 作者:IT王子 更新时间:2023-10-29 02:26:09 28 4
gpt4 key购买 nike

一些描述我的问题的伪代码:

  1. 从数据库中获取产品 FoodProduct
  2. 检查 isExpired() FoodProduct.DueDate.Before(time.Now())
  3. if isExpired() 然后启动async 任务更新数据库中 FoodProduct 的状态为过期:FoodProduct.updateStatus("expired")

    [if isExpired()=false 直接跳到第 4 步。]

  4. 通过 http 将 FoodProduct 返回给客户端,而无需等待第 3 步的回答

我知道 go 有 goroutines、mutex 和许多其他好东西。如果我不关心异步操作的结果,我应该使用什么选项?

最佳答案

只需使用 go 关键字启动异步任务。它会在自己的 goroutine 中分离出来,您的主执行线不再需要关心它。

product := fetchProduct()
if product.isExpired() {
go product.updateStatus("expired")
}
// return as normal

请注意,由于 product.updateStatus 几乎肯定会更改该产品的状态,因此很难预测何时可以安全地再次使用该产品(也就是何时在底层数据库层中对其进行更新)

关于Golang 在不等待的情况下执行异步任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52956852/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com