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

网站更换域名 seosharepoint做门户网站

网站更换域名 seo,sharepoint做门户网站,网站超链接怎么做,云建站的步骤通过并发编程在 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.yayakq.cn/news/888263/

相关文章:

  • 品牌网站建设 d磐石网络向国外卖货的电商平台
  • html音乐网页设计模板优化关键词规则
  • 展示产品的网站 个人备案还是企业已有域名 搭建网站
  • 怎么做网站教程 用的工具成都设计院工资
  • 成都手机微信网站建设报价php网站开发案例论文
  • 文化传媒可以做网站吗珠海做快照网站电话
  • 备案网站域名和主机关系ps做字幕模板下载网站
  • 线上海报设计网站建造网站 备案
  • 怎么做网站推广知乎国产做性直播视频网站
  • 深圳专业网站设计制作wordpress 判断pc访问
  • 湖北中英双语网站建设网站建设所需要的东西
  • 做酒的网站有哪些dw是做网站的软件吗
  • 郑州哪家公司做网站wordpress wiki 模版
  • 昆仑万维做网站微信开放平台登陆
  • 外链发布网站网站点击
  • 餐饮网站建设策划书网络公司免费做网站
  • 建设银行网站预约取款网站建设费用首选网络
  • 电子商务网站建设实训心得saas网站建设
  • 湖北网站建设搭建宿迁网站建设介绍公司
  • 怀化火车站网站青岛公司网站设计
  • 企业产品展示网站源码在元典公司做网站有合同吗
  • WordPress单页添加Jsseo下载站
  • 四川省住房和建设厅官方网站常德论坛尚一网市民留言
  • 那个网站做外贸高校网站建设需求单
  • 高端网站设计哪家好织梦cms和wordpress
  • 选择佛山网站设计什么是网站栏目标题
  • 今鼎网站建设云南网站建设设计
  • 黑龙江网站建设费用目前哪个城市又封了
  • 明年做哪个网站致富自己电脑做网站必须装jdk
  • 衡阳营养师报考网站iphone网站