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

分类信息网站推广的意义创建网站需要准备哪些资料

分类信息网站推广的意义,创建网站需要准备哪些资料,百度网站的优势,有关电商网站开发的实习报告Go 语言内置并发模型,被誉为“并发界的扛把子”。它的并发不是线程、不是回调地狱,而是轻量、优雅的 goroutine channel 模式。 这一篇带你一步步掌握 Go 并发编程:从 goroutine 到 channel、select、context、sync,写出高并发高…

Go 语言内置并发模型,被誉为“并发界的扛把子”。它的并发不是线程、不是回调地狱,而是轻量、优雅的 goroutine + channel 模式。

这一篇带你一步步掌握 Go 并发编程:从 goroutine 到 channel、select、context、sync,写出高并发高性能代码不是梦!


🧵 一、开启并发的第一步:goroutine

func sayHello() {fmt.Println("Hello from goroutine")
}go sayHello()
fmt.Println("Main finished")

📌 使用 go 关键字创建 goroutine。它是 Go 的轻量线程:

  • 每个 goroutine 栈空间初始仅 2KB,远小于线程
  • Go runtime 自动调度,使用 M:N 调度模型(goroutine 与系统线程动态映射)

⚠️ 注意:如果 main() 提前退出,goroutine 没机会执行。

time.Sleep(time.Second)

📬 二、goroutine 通信神器:channel

ch := make(chan string)go func() {ch <- "数据来啦!"
}()msg := <-ch
fmt.Println(msg)

✅ channel 特点:

  • 类型安全
  • 无缓冲时:发送和接收会互相阻塞(同步通信)
  • channel 是“通信的内存”,不是“共享的内存”

🔁 三、带缓冲的 channel

ch := make(chan int, 2) // 缓冲区大小 2
ch <- 1
ch <- 2
fmt.Println(<-ch)
fmt.Println(<-ch)

🧠 使用场景:

  • 任务管道
  • 控制速率(限流)
  • 缓冲写入日志、数据等

🔀 四、select:监听多个 channel

select {
case msg1 := <-ch1:fmt.Println("收到1:", msg1)
case msg2 := <-ch2:fmt.Println("收到2:", msg2)
default:fmt.Println("啥也没收到")
}
  • 类似 switch,但用于 channel
  • 可以实现超时、轮询、优先级控制等逻辑

📌 配合 time.After() 做超时控制:

select {
case data := <-ch:fmt.Println("收到数据", data)
case <-time.After(1 * time.Second):fmt.Println("超时啦")
}

⏳ 五、context:优雅地取消 goroutine

ctx, cancel := context.WithCancel(context.Background())go func(ctx context.Context) {for {select {case <-ctx.Done():fmt.Println("收到取消信号,退出")returndefault:fmt.Println("执行中...")time.Sleep(500 * time.Millisecond)}}
}(ctx)time.Sleep(2 * time.Second)
cancel()

📌 常见使用场景:

  • HTTP 请求取消
  • 数据库操作超时
  • 子任务取消控制

函数:

名称用途
WithCancel手动调用 cancel()
WithTimeout一段时间后自动取消
WithDeadline指定时间点取消

🧱 六、sync 包:共享数据的并发控制

✅ WaitGroup:等待一组 goroutine 完成
var wg sync.WaitGroupfor i := 0; i < 5; i++ {wg.Add(1)go func(i int) {defer wg.Done()fmt.Println("任务", i)}(i)
}wg.Wait()
✅ Mutex:互斥锁,保护共享资源
var mu sync.Mutex
var count intfor i := 0; i < 10; i++ {go func() {mu.Lock()count++mu.Unlock()}()
}
✅ sync.Once:只执行一次(懒加载)
var once sync.Once
once.Do(func() {fmt.Println("只执行一次")
})

⚙️ 七、channel 关闭与判断

close(ch)
val, ok := <-ch
if !ok {fmt.Println("通道已关闭")
}
  • 关闭后不能再写入,否则 panic
  • 读已关闭通道会返回零值和 false

🧠 八、小结与对比

技术点用途
goroutine创建并发执行单元
channel安全通信管道
select多路 channel 选择
context协程生命周期控制
sync互斥、等待、只执行一次等

💡 实战推荐练习

  • ✅ 写一个并发爬虫,使用 goroutine + channel 控制并发数量
  • ✅ 用 context 控制下载任务的取消
  • ✅ 构建一个日志服务,带缓冲 channel + goroutine 写入日志文件
  • ✅ 使用 WaitGroup 模拟并发任务同步收集结果

🏁 下一篇预告

👉 Go语言-初学者日记(七):项目实战篇:用 Go 写一个 RESTful API 服务!


文章转载自:

http://hfGoE8YB.mxcgf.cn
http://sqkFkaQn.mxcgf.cn
http://ns8y5LU0.mxcgf.cn
http://YAu67F4H.mxcgf.cn
http://I4UxONHg.mxcgf.cn
http://hIH8vuNi.mxcgf.cn
http://B5v6TQGK.mxcgf.cn
http://qn5XvD0X.mxcgf.cn
http://aDe6k01Q.mxcgf.cn
http://lqwt56y8.mxcgf.cn
http://EEwX3SRz.mxcgf.cn
http://plv71Zjd.mxcgf.cn
http://Z1dGNtfS.mxcgf.cn
http://Li1p7iWp.mxcgf.cn
http://pDYGzFc6.mxcgf.cn
http://gEACdTV1.mxcgf.cn
http://silgk37G.mxcgf.cn
http://Z20XEL6V.mxcgf.cn
http://kOM2qWon.mxcgf.cn
http://jZerRePg.mxcgf.cn
http://jm3wPVgD.mxcgf.cn
http://qibEDnqG.mxcgf.cn
http://QZ8H6EyN.mxcgf.cn
http://o7Wsfjd6.mxcgf.cn
http://1G3yZe4l.mxcgf.cn
http://XDvkOnor.mxcgf.cn
http://61LHLdyJ.mxcgf.cn
http://55MBU4YO.mxcgf.cn
http://EYpSbvr3.mxcgf.cn
http://Q3OVCIcC.mxcgf.cn
http://www.dtcms.com/wzjs/737362.html

相关文章:

  • 介绍移动互联网的网站有哪些网站建设报告论文百度文库
  • 网站备案变更 能让首页关闭 二级域名继续无锡大型网站设计公司
  • 四川住房和城乡建设厅网站打不开公司网页建立
  • 钉钉网站建设服务协议wordpress调用阅读量
  • thinkphp建站网址phpcms v9企业网站模板:蓝色电子科技公司网站模板
  • 免费注册网站互联网平台营销
  • 南安梅山建设银行网站wordpress打赏可见插件
  • 嘉兴门户网站包头市住房与城乡建设部网站
  • 济南网站建设cnwenhui网站设计与网页设计的区别
  • 网站开发容易找工作吗起个娱乐网站名字
  • 爱是做的电影网站wordpress建站发文教程
  • 如何用ps来做网站设计珠海微网站建设
  • 商丘网站建设价格网页与网站的区别与联系
  • 17我们一起做网站网站的建设与维护工资
  • 泊头网站制作案例做网站的公司多少钱
  • 网站设计收费郑州哪里有做网站的
  • 免费一站式网站建设宁波找网站建设企业
  • 做购物网站费用中国建筑业发展现状
  • 网站建设费能入长期待摊吗网站推广的主要方法有哪些
  • 酷站素材专门做代理的网站
  • 国外的服务器做的网站在国外能打开在国内打不开是什么原因怎么做免费个人网站
  • 网站内部建设和程序wordpress 插件调用文章
  • 视频网站 外链怎么自己做网站框架
  • 网站关键词设置几个wordpress生成微信分享图片
  • flash网站源文件旅行社营业网点可以做网站吗
  • 星河网站建设电子商务网站的网络营销策略分析
  • html网站怎么做几个网页WordPress维护模式退出
  • 做视频解析网站违法不自适应网站推广
  • 郑州网站建设炉石千万不要去做房地产销售
  • 网站大屏轮播图效果怎么做的wordpress注册页面插件