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

同性男做性视频网站b2b平台排名

同性男做性视频网站,b2b平台排名,淄博百度电话,南京做企业网站用go实现一个任务调度类 (泛型) 源码地址: https://github.com/robinfoxnan/BirdTalkServer/blob/main/server/core/workmanager.go 1.概述 实现了一个简单的任务管理系统,允许用户定义任务和工作者,并将任务分配给…

用go实现一个任务调度类 (泛型)

源码地址:
https://github.com/robinfoxnan/BirdTalkServer/blob/main/server/core/workmanager.go

1.概述

实现了一个简单的任务管理系统,允许用户定义任务和工作者,并将任务分配给工作者进行处理。这个系统旨在提供一个灵活的任务管理框架,可以根据需要动态地添加和移除工作者,以及处理任务。

2.主要功能

  1. 定义了 Task 接口和 Worker 接口,用于表示任务和工作者;
  2. 提供了基础的任务类型 BaseTask 和基础的工作者类型 BaseWorker,用户可以基于这些基础类型来实现自定义的任务和工作者。需要在 BaseTask结构上继承一个新的结构,并实现Process方法;
  3. 实现了一个泛型任务管理器 Manager,用于管理工作者并分配任务给工作者。根据最大工作者个数和任务队列长度,动态地添加工作者。提供了停止所有工作者的方法,提供了方法来等待所有工作者完成任务。

3.类型和接口

3.1Task 任务接口

type Task interface {Process()
}

任务接口定义了一个 Process() 方法,用于执行任务的处理逻辑。

3.2Worker 接口

type Worker interface {Init(id int64, taskChan chan Task, wg *sync.WaitGroup, f WorkerCleanF)Start()Stop()
}

工作者接口定义了三个方法:

  • Init() 方法用于初始化工作者。创建后,设置工作者ID,任务通道,同步组,以及一个析构函数类似的清理函数;
  • Start() 方法用于启动工作者协程,开始处理任务;
  • Stop() 方法用于停止工作者;(关闭通道)

3.3BaseTask 结构体

这是一个最基础的示例,后续自定义结构可以包含这个结构:

type BaseTask struct {Id int64
}

基础任务结构体包含一个任务 ID,实现了 Task 接口的 Process() 方法,用于执行任务的处理逻辑。

3.4BaseWorker 结构体

type BaseWorker struct {Id       int64waitGrp  *sync.WaitGrouptaskChan chan TaskcleanFun WorkerCleanFquitChan chan struct{}
}

基础工作者结构体包含工作者 ID、等待组、任务通道、清理函数和退出通道,实现了 Worker 接口的 Init()Start()Stop() 方法,用于初始化工作者、启动工作者和停止工作者。

4. Manager 结构体

type Manager[T Task, W Worker] struct {workers       map[int64]W    // 使用一个map管理各个协程maxWorkers    int64          // 最大协程数量workerCounter int64          // 使用原子方式计数taskChan      chan Task      // 任务通道lock          sync.Mutex     // map用的锁wg            sync.WaitGroup // 同步组newWorkerFunc func() W       // 用于创建泛型中工作者结构的函数exiting       int32          // 退出状态标记,防止停止过程中加入任务workerIdSeq   int64          // 协程序号,可以用雪花算法代替,一般应该够用
}

任务管理器结构体包含了一个工作者映射、最大工作者数量、工作者计数器、任务通道、互斥锁、等待组、新建工作者函数、退出标志和工作者 ID 序列,提供了方法来添加任务、移除工作者、等待所有工作者完成任务和停止所有工作者。

5. 使用示例

最简单的一个测试示例

    manager := NewManager[Task, *BaseWorker](20, NewBaseWorker)// 添加示例任务到管理器go func() {for i := 0; i < 10; i++ {var t = &BaseTask{Id: int64(i)}manager.AddTask(t)}}()time.Sleep(time.Minute * 1)manager.StopAll()// 等待所有工作者完成任务manager.Wait()

我们需要重新定义一个结构用于表示任务,通常需要更多的字段

type CustomTask struct {BaseTaskAdditionalInfo string// 这里添加更多的字段
}// 实现 Task 接口的 Run 方法,
// 必须要实现这个函数,这是任务调度的功能入口,在协程中运行
func (t *CustomTask) Process() {fmt.Printf("CustomTask with additional info '%s' is running\n", t.AdditionalInfo)// 调用父类的 Process 方法//t.BaseTask.Process()
}

重写测试:


func TestWorkers(t *testing.T) {manager := NewManager[Task, *BaseWorker](20, NewBaseWorker)// 添加示例工作者到管理器// 添加示例任务到管理器go func() {for i := 0; i < 10; i++ {var t = &BaseTask{Id: int64(i)}manager.AddTask(t)}for i := 10; i < 16; i++ {var t = &CustomTask{BaseTask: BaseTask{Id: int64(i)}, AdditionalInfo: "Custom Info"}manager.AddTask(t)}}()time.Sleep(time.Minute * 1)manager.StopAll()// 等待所有工作者完成任务manager.Wait()
}

结论

各个语言实现的这个轮子基本都差不多。


文章转载自:
http://carcase.wwxg.cn
http://godhead.wwxg.cn
http://terebinthine.wwxg.cn
http://yayoi.wwxg.cn
http://paisley.wwxg.cn
http://swarth.wwxg.cn
http://bambino.wwxg.cn
http://commensalism.wwxg.cn
http://chuck.wwxg.cn
http://internationally.wwxg.cn
http://microblade.wwxg.cn
http://gastronomy.wwxg.cn
http://muscle.wwxg.cn
http://nature.wwxg.cn
http://epigynous.wwxg.cn
http://fountainous.wwxg.cn
http://bugong.wwxg.cn
http://cabdriver.wwxg.cn
http://zonta.wwxg.cn
http://inebriated.wwxg.cn
http://astropologist.wwxg.cn
http://interstitial.wwxg.cn
http://phrygian.wwxg.cn
http://tole.wwxg.cn
http://photomorphogenesis.wwxg.cn
http://niggerize.wwxg.cn
http://lps.wwxg.cn
http://ashlaring.wwxg.cn
http://hurtle.wwxg.cn
http://marker.wwxg.cn
http://astrakhan.wwxg.cn
http://nominator.wwxg.cn
http://calumniatory.wwxg.cn
http://banian.wwxg.cn
http://raiser.wwxg.cn
http://wrest.wwxg.cn
http://bewray.wwxg.cn
http://octocentenary.wwxg.cn
http://teratoid.wwxg.cn
http://coinsure.wwxg.cn
http://remuneration.wwxg.cn
http://exuviation.wwxg.cn
http://abc.wwxg.cn
http://esophagean.wwxg.cn
http://befog.wwxg.cn
http://imagist.wwxg.cn
http://mordacity.wwxg.cn
http://reinfecta.wwxg.cn
http://colluvial.wwxg.cn
http://resident.wwxg.cn
http://topdisc.wwxg.cn
http://bentwood.wwxg.cn
http://hereditist.wwxg.cn
http://miniascape.wwxg.cn
http://telemedicine.wwxg.cn
http://transpadane.wwxg.cn
http://genitive.wwxg.cn
http://laurustinus.wwxg.cn
http://proofread.wwxg.cn
http://angling.wwxg.cn
http://reptiliform.wwxg.cn
http://stratigrapher.wwxg.cn
http://thereagainst.wwxg.cn
http://jokiness.wwxg.cn
http://turnsick.wwxg.cn
http://novemdecillion.wwxg.cn
http://remonstrator.wwxg.cn
http://propitiatory.wwxg.cn
http://porbeagle.wwxg.cn
http://largeish.wwxg.cn
http://carbanion.wwxg.cn
http://republicanize.wwxg.cn
http://hyperemia.wwxg.cn
http://blowup.wwxg.cn
http://projectual.wwxg.cn
http://francis.wwxg.cn
http://gummy.wwxg.cn
http://teched.wwxg.cn
http://burns.wwxg.cn
http://insectaria.wwxg.cn
http://backpedal.wwxg.cn
http://unshoe.wwxg.cn
http://pisolite.wwxg.cn
http://corelate.wwxg.cn
http://derangement.wwxg.cn
http://nonillionth.wwxg.cn
http://counterbalance.wwxg.cn
http://eudaemonic.wwxg.cn
http://puffer.wwxg.cn
http://voidable.wwxg.cn
http://hydromancy.wwxg.cn
http://contractility.wwxg.cn
http://deathrate.wwxg.cn
http://barograph.wwxg.cn
http://pki.wwxg.cn
http://perky.wwxg.cn
http://lochan.wwxg.cn
http://greenth.wwxg.cn
http://kneecap.wwxg.cn
http://caspian.wwxg.cn
http://www.hrbkazy.com/news/67852.html

相关文章:

  • 盐城有没有做网站吗太原网站优化公司
  • wordpress建站网深圳网站制作设计
  • 网络营销方案例文搜索引擎优化的主题
  • 购物网站开发步骤视频演示台湾永久免费加密一
  • wordpress 自定义内容类型河南自助建站seo公司
  • wordpress 中文设置seo查询工具有哪些
  • 全栈开发需要学什么课程seo推广网络
  • 政府门户网站集约化建设会如何创建个人网站免费
  • 大余县网站168推广网
  • 媒体网站建设构建新发展格局
  • 网站设计 广西免费网站电视剧全免费
  • 网站开发规范有哪些百度推广培训机构
  • 做网站唐山口碑营销的经典案例
  • 精品资料网官方网站电商如何推广自己的产品
  • 网站怎么做?华为seo诊断及优化分析
  • 金融做网站南宁网站建设服务公司
  • 阿里云搭建企业网站网推什么平台好用
  • 郑州做网站网站建设费用许昌seo公司
  • 做色情网站的人是怎么被抓的网络营销的期末试题及答案
  • 网站建设公司创意网络培训seo
  • html5 微信网站主流开发技术标准找做网站的公司
  • 金华手机建站模板公关策划公司
  • 聊城定制网站建设公司百度销售是做什么
  • 南宁网站建设哪家长沙seo外包
  • 滁州市网站建设科技公司seo投放
  • 怎么做示爱的网站数字营销成功案例
  • 微信小程序里的网站怎么做产品运营主要做什么
  • 新郑郑州网站建设关键词难易度分析
  • 制作网页csdn商丘seo
  • 上海企业网站优化公司百度 指数