首页 > 其他分享 >go ants使用

go ants使用

时间:2023-11-21 22:59:35浏览次数:31  
标签:task sum ants NewPoolWithFunc Task func 使用 go data

NewPoolWithFunc -> func(data interface{}) -> data.(Task) -> Task.Do

上面的这些函数都是同步的,添加到 NewPoolWithFunc中后,执行 invoke会变成异步

NewPool和NewPoolWithFunc本质是一样的,都是一个 anonymous function

参考demo,人家的代码抽象能力比我强得多

func main() {
	p, _ := ants.NewPoolWithFunc(10, taskFunc)
	defer p.Release()

	p.Invoke()
}

// 直接添加到goroutine的函数
func taskFunc(data interface{}) {
	task := data.(*Task)
	task.Do()
	fmt.Printf("task:%d sum:%d\n", task.index, task.sum)
}

// 对并发任务的抽象
type Task struct {
	index int
	nums  []int
	sum   int
	wg    *sync.WaitGroup
}

func (t *Task) Do() {
	for _, num := range t.nums {
		t.sum += num
	}
	t.wg.Done()
}

标签:task,sum,ants,NewPoolWithFunc,Task,func,使用,go,data
From: https://www.cnblogs.com/runninginsilence/p/17847815.html

相关文章

  • SQL DELETE 语句:删除表中记录的语法和示例,以及 SQL SELECT TOP、LIMIT、FETCH FIRST
    SQLDELETE语句SQLDELETE语句用于删除表中的现有记录。DELETE语法DELETEFROM表名WHERE条件;注意:在删除表中的记录时要小心!请注意DELETE语句中的WHERE子句。WHERE子句指定应删除哪些记录。如果省略WHERE子句,将会删除表中的所有记录!演示数据库以下是示例中使用的Cus......
  • django2.0版的path path转化器
    1从2.x以后,建议使用path,是一个准确路径2使用正则方式,推荐使用re_path,用法跟url一模一样 path转化器 15个内置转换器'''str,匹配除了路径分隔符(/)之外的非空字符串,这是默认的形式int,匹配正整数,包含0。slug,匹配字母、数字以及横杠、下划线组成的字符串。u......
  • SQLAlchemy快速使用、SQLAlchemy原生操作、SQLAlchemy操作表、一对多关系、多对多关系
    SQLAlchemy快速使用介绍#SQLAlchemy是一个基于Python实现的ORM框架,对象关系映射#orm框架----》djangoorm--》只能用在django中,不能独立使用#python界的orm框架-peewee:小型-sqlalchemy:企业级,支持异步,用在异步框架中-djagnoormm-TortoiseORM......
  • 1.MyBatisPlus代码生成器使用
    在项目开发中,快速生成entity、mapper、service、controller包中的简单接口和类能够加速我们开发的速度时间。为此,我们可以使用MyBatis-Plus的代码生成器快速生成前面几个包的接口和代码。快速生成代码的流程依次是:引入依赖、配置文件、编写生成类并启动。1.引入依赖 为......
  • go errgroup用法
    草稿errgroup就是在waitgroup基础上封装了一层。我还是不喜欢go的这个控制goroutine的方式。只贴一下代码:funcmain(){ eg,ctx:=errgroup.WithContext(context.Background()) fori:=0;i<10;i++{ i:=i select{ case<-ctx.Done(): fmt.Printf("Task......
  • 免费AI换脸app72写真使用感受
    使用72写真app后,我对它的使用体验有一些深刻的感受。选择喜欢的封面图,点击一键生成一款写真,等待15秒会生成1张用户的写真,点击写真可以下载到手机相册,写真是根据用户上传的头像生成,因此上传更清晰的正面的无遮挡的大头照会更像苹果应用商店(AppStore)预览链接:https://apps.ap......
  • Scanner 类的使用
    Scaner类可以处理控制台的输入和处理字符串。1.基本概念:如  "1  3   4   7”标记:1,3,4,7分隔符:空格“ ”2.常用方法: next()//读入一个标记,标记之间以空格,多个空格或者回车换行等进......
  • 如何在 PHP 中使用 while 循环按 ID 列出节中的数据?
    要在PHP中使用while循环按ID列出数据,您可以按照以下步骤进行操作:创建数据库连接:首先,您需要使用适当的凭据来连接到数据库。您可以使用mysqli或PDO等库来实现数据库连接。$servername="localhost";$username="your_username";$password="your_password";$dbname......
  • 单链表建表,倒置,遍历(不使用Class,简洁易懂)
    在C++中通过递归方法实现单链表倒置初始化列表structListNode{ intval; LiseNode*next; ListNode(intx):val(x),next(NULL){}};遍历voidquery_node(){ node*p=head; while(p!=NULL){ cout<<p->data<<''; p=p->nxt; } cout<<endl;}建表(......
  • SpringBoot使用RedisTemplate
    SpringBoot使用RedisTemplate目录1.Redis五种基础数据结构2.SpringBoot连接Redis1引入依赖2配置redis连接3编写测试类3.详解RedisTemplate的API1常用数据操作2.几种数据结构操作的具体用法1.Redis五种基础数据结构参考链接:Redis入门-数据类型:5种基础数据类......