当前位置: 首页 > wzjs >正文

网站建设const是什么意思网络销售每天做什么

网站建设const是什么意思,网络销售每天做什么,旅游网站建设系统,百度站长平台网站收录Go语言中的context包提供了一种在不同Goroutines之间传递取消信号、超时、截止日期和请求范围值的方法,用于更好地管理并控制并发操作。 WithCancel 在这个示例中,我们首先创建了一个带有取消功能的context,然后启动了一个Goroutine来执行某…

Go语言中的context包提供了一种在不同Goroutines之间传递取消信号、超时、截止日期和请求范围值的方法,用于更好地管理并控制并发操作。

WithCancel

在这个示例中,我们首先创建了一个带有取消功能的context,然后启动了一个Goroutine来执行某项工作,这个Goroutine在工作过程中定期检查ctx.Done()通道,如果接收到取消信号,则停止工作。在main函数中,我们等待了一段时间,然后调用cancel函数,以发送取消信号。在取消信号发送后,Goroutine会收到信号并停止工作。

package main

import (

    "context"

    "fmt"

    "time"

)

func doSomething(ctx context.Context) {

    for {

        select {

        case <-ctx.Done():

            fmt.Println("Received cancellation signal. Cleaning up...")

            return

        default:

            // Simulate some work

            fmt.Println("Working...")

            time.Sleep(1 * time.Second)

        }

    }

}

func main() {

    // 创建一个带有取消功能的context

    ctx, cancel := context.WithCancel(context.Background())

    // 启动一个Goroutine执行某项工作,传入context

    go doSomething(ctx)

    // 等待一段时间,然后取消工作

    time.Sleep(10 * time.Second)

    cancel() // 调用cancel函数来发送取消信号

    // 等待一段时间,以观察工作是否被取消

    time.Sleep(5 * time.Second)

}

WithTimeout

在这个示例中,我们首先创建一个带有超时控制的 context,并设置最大执行时间为 5 秒。然后,我们启动一个 Goroutine 来执行某项工作。主函数休眠 10 秒以等待 Goroutine 的完成或超时。由于 context.WithTimeout 设置了最大执行时间为 5 秒,因此 Goroutine 会在 5 秒后收到超时信号,结束工作。

context.WithTimeout 可以用于控制并发操作的执行时间,以确保它们不会无限期地运行。这在处理网络请求、I/O 操作、调用外部服务等场景中特别有用,以避免操作长时间阻塞并占用资源。

package main

import (

    "context"

    "fmt"

    "time"

)

func doSomething(ctx context.Context) {

    for {

        select {

        case <-ctx.Done():

            fmt.Println("Received cancellation signal. Cleaning up...")

            return

        case <-time.After(1 * time.Second):

            fmt.Println("Task completed.")

        }

    }

}

func main() {

    // 创建一个带有超时控制的 context,设置最大执行时间为 5 秒

    ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)

    defer cancel() // 一定要记得调用 cancel,确保资源得以释放

    // 启动一个 Goroutine 执行某项工作,传入 context

    go doSomething(ctx)

    // 主函数休眠 10 秒,以等待 Goroutine 完成或超时

    time.Sleep(10 * time.Second)

}

WithValue

package main

import (

    "context"

    "fmt"

    "time"

)

func processRequest(ctx context.Context) {

    // 从context中获取请求ID

    requestID, ok := ctx.Value("requestKey").(int)

    if !ok {

        fmt.Println("Request ID not found in context.")

        return

    }

    fmt.Printf("Processing request with ID %d\n", requestID)

}

func main() {

    // 创建一个带有请求ID的context

    ctx := context.WithValue(context.Background(), "requestKey", 12345)

    // 在另一个函数中使用context

    go processRequest(ctx)

    // 主函数休眠一段时间,以确保Goroutine有时间运行

    time.Sleep(5 * time.Second)

}

WithDeadline

context.WithDeadline 方法用于创建一个带有截止日期的 context,允许你设置一个操作的最后截止日期,如果操作在截止日期之后仍未完成,context 会自动取消它。

package main

import (

    "context"

    "fmt"

    "time"

)

func doSomething(ctx context.Context) {

    for {

        select {

        case <-ctx.Done():

            fmt.Println("Received cancellation signal. Cleaning up...")

            return

        case <-time.After(1 * time.Second):

            fmt.Println("Task completed.")

        }

    }

}

func main() {

    // 设置截止日期为当前时间加 5 秒

    deadline := time.Now().Add(5 * time.Second)

    // 创建一个带有截止日期的 context

    ctx, cancel := context.WithDeadline(context.Background(), deadline)

    defer cancel() // 一定要记得调用 cancel,确保资源得以释放

    // 启动一个 Goroutine 执行某项工作,传入 context

    go doSomething(ctx)

    // 主函数休眠 10 秒,以等待 Goroutine 完成或截止日期到达

    time.Sleep(10 * time.Second)

}

context继承

这个例子5秒后结束程序。

package main

import (

    "context"

    "fmt"

    "time"

)

func doSomething(ctx context.Context) {

    for {

        select {

        case <-ctx.Done():

            fmt.Println("Received cancellation signal. Cleaning up...")

            return

        default:

            // Simulate some work

            fmt.Println("Working...")

            time.Sleep(1 * time.Second)

        }

    }

}

func main() {

    // 创建一个带有取消功能的context

    rootCtx, cancel := context.WithTimeout(context.Background(), 5*time.Second)

    ctx, cancel := context.WithCancel(rootCtx)

    // 启动一个Goroutine执行某项工作,传入context

    go doSomething(ctx)

    // 等待一段时间,然后取消工作

    time.Sleep(10 * time.Second)

    cancel() // 调用cancel函数来发送取消信号

    // 等待一段时间,以观察工作是否被取消

    time.Sleep(5 * time.Second)

}

http://www.dtcms.com/wzjs/464790.html

相关文章:

  • jsp做的网站可以用的百度seo软件是做什么的
  • 电子商务网站业务流程最好看免费观看高清大全
  • 佛山网站建设怎么做百度排名点击软件
  • 做网站怎么接广告赚钱seo服务指什么意思
  • 寿光哪里做网站网络推广用什么软件好
  • 网站互动推广搜索引擎网站推广如何优化
  • 网站建设优化公司呼和浩特seo推广方案
  • 优化推广网站玄幻小说排行榜百度风云榜
  • 苏州网站建设设计公司哪家好软文推广案例500字
  • 如何做网站优化推广河南网站排名
  • 搬家网站怎么做武汉seo搜索引擎优化
  • 网站建设方案500字电商运营培训课程有哪些
  • 做产品网站费用吗怎么做一个网站
  • 雄安做网站公司合肥百度推广排名优化
  • 男女做暖暖插孔网站网络营销有哪些内容
  • 论坛建站企点官网
  • 素材视频北京seo外包平台
  • 天天向上 网站建设seo网站优化培训多少价格
  • 抚州网站开发seo综合查询是什么意思
  • 郑州做公司网站的百度关键词搜索热度查询
  • 网站搜索功能seo推广技巧
  • 网站备案 电信济南竞价托管
  • 大连城乡建设局官网北京seo相关
  • 怎么免费搭建网站海外seo推广公司
  • 做网站需要多少费用企业推广宣传文案
  • 潮州外贸网站建设吉林关键词优化的方法
  • 小企业做网站选那种天琥设计培训学校官网
  • 获取网站缩略图宁波品牌网站推广优化公司
  • 在百度怎么免费制作网站seo研究协会网
  • 天津营销网站建设河北seo网络优化培训