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

网站建设日程表模板百度热榜排行

网站建设日程表模板,百度热榜排行,华夏名网网站建设教程,毕业答辩为什么做网站通过并发编程在 Go 程序中实现的3种常见的并发模式。 参考:https://cloud.tencent.com/developer/article/1720733 1、Runner 定时任务 Runner 模式有代表性,能把(任务队列,超时,系统中断信号)等结合起来…

通过并发编程在 Go 程序中实现的3种常见的并发模式。

参考:https://cloud.tencent.com/developer/article/1720733

1、Runner 定时任务

Runner 模式有代表性,能把(任务队列,超时,系统中断信号)等结合起来形成一项定时任务。任何一个条件满足触发,程序就结束了。

import ("errors""os""os/signal""time"
)//Runner 在给定的超时时间内执行一组任务
// 并且在操作系统发送中断信号时结束这些任务
type Runner struct {//从操作系统发送信号interrupt chan os.Signal//报告处理任务已完成complete chan error//报告处理任务已经超时timeout <-chan time.Time//持有一组以索引为顺序的依次执行的以 int 类型 id 为参数的函数tasks []func(id int)
}//New 函数返回一个新的准备使用的 Runner,d:自定义分配的时间
func New(d time.Duration) *Runner {return &Runner{interrupt: make(chan os.Signal, 1),complete:  make(chan error),//会在另一线程经过时间段 d 后向返回值发送当时的时间。timeout: time.After(d),}
}//Add 将一个任务加入到 Runner 中
func (r *Runner) Add(tasks ...func(id int)) {}//Start 开始执行所有任务,并监控通道事件
func (r *Runner) Start() error {}//执行每一个已注册的任务
func (r *Runner) run() error {
}//检测是否收到了中断信号
func (r *Runner) gotInterrupt() bool {}

Runner 类型声明了 3 个通道,用来辅助管理程序的生命周期,以及用来表示顺序执行的不同任务的函数切片。

2、Pool 缓存池

Go 1.6 及之后的版本中,标准库里自带有资源池的实现:sync.Pool,(还有更好的gopool,后者能控制协程数。)

sync.Pool: New、Get、Put

//
func main() {// 创建一个 sync.Poolvar pool sync.Pool// 设置对象池的 New 函数,创建对象pool.New = func() interface{} {return "New Object"}// 获取对象obj := pool.Get()fmt.Println(obj) // 输出:New Object// 将对象放回池中pool.Put("Reused Object")// 再次获取对象obj = pool.Get()fmt.Println(obj) // 输出:Reused Object
}
func main() {var studentPool = sync.Pool{New: func() interface{} { return new(Student) // 例如创建 Student 对象},}//取得对象和归还对象stu := studentPool.Get().(*Student)json.Unmarshal(buf, stu) // 使用线程池的对象studentPool.Put(stu)//Get() 用于从对象池中获取对象,因为返回值是 interface{},因此需要类型转换。Put() 则是在对象使用完毕后,返回对象池。}   

gopool : NewPool、CtxGo

高性能:针对高并发进行了优化,性能较 sync.Pool 更高。
灵活性强:支持更多的池管理选项,比如对象的最大数量、超时时间等。

pool := gopool.NewPool("article_spider", 10, gopool.NewConfig())
//for {}
pool.CtxGo(ctx, func() {defer wg.Done()c.dbMutex.Lock()defer c.dbMutex.Unlock()//处理程序})

选择指南:

只需要基本的对象池,并且你的性能需求不是特别高,可以选择 sync.Pool。它来自Go 标准库,易用,适合缓存临时对象,减少内存分配带来的开销。

在高并发、低延迟的场景下,或者需要更精细的池管理控制,可以选择 gopool。它为高并发场景进行了优化,提供了更多配置选项,适合需要复杂池管理的应用。

3、work

有缓冲通道

http://www.mnyf.cn/news/39592.html

相关文章:

  • 互联网+大赛作品案例黑河seo
  • 宝塔搭建app教程网站排名seo软件
  • 如何做好网站seo杭州seo排名公司
  • 中国石油建设工程协会网站包头seo
  • 太原企业自助建站seo工作
  • 东莞市建设公共交易中心网站今日国际新闻10条
  • 网站建设网络推广代理公司怎样找推广平台
  • 婚恋网站 模板网站推广步骤
  • 武汉给政府做网站的公司一年的百度指数
  • 中小型网站建设与管理友链提交入口
  • 做网站优化词怎么选择拼多多跨境电商平台
  • 如何免费做网站seo排名哪家正规
  • DW做网站下拉列表怎么做百度游戏中心app
  • 网站购买域名百度浏览器网址是多少
  • 农特产品如何做网站百度网盘客服中心电话
  • 什么什么云用来做网站重庆网站排名推广
  • 做短租类型的网站在哪里可以免费自学seo课程
  • 网站建设与开发定制十大暗网搜索引擎
  • 怎么做自己的网站?手机搭建网站
  • 黄页营销网站视频免费大全搜索引擎优化人员优化
  • 天津网站开发价格邯郸seo营销
  • 文佳佳做网站如何进行网络推广
  • b站视频推广网站软件河南网站推广电话
  • 我想自己卖特产怎么做网站推广产品的方法和步骤
  • 网站要注册为什么网络营销服务
  • 制作网站空间域名免费友情链接交换平台
  • 茂名网站制作价格长沙seo搜索
  • 丰台区社会建设工作办公室网站个人自己免费建网站
  • 包装材料网站建设免费人脉推广软件
  • 东台网站建设外贸平台有哪些?