• webqwe-资源分享和开发经验
AD
AD

Home / 开发 / 奇怪的姿势golang并发限制数量和dart异步限制数量

奇怪的姿势golang并发限制数量和dart异步限制数量

2024-02-01 16:22:54
447 阅读

golang看起来舒服多了

package main

import (
	"fmt"
	"sync"
)

func main() {

	td := make(chan int, 10)
	var wg sync.WaitGroup

	for i := 0; i < 1000; i++ {
		wg.Add(1)
		td <- i
		go func() {
			defer wg.Done()
			fmt.Println(<-td)
		}()
	}

	wg.Wait()
	fmt.Println("完成")
}


接下来是dart想模仿上面操作,搞了半天dart搞不懂,结果另辟蹊径,这操作就是秀~

int concurrencyLimit = 10; // 你可以根据需要调整并发上限

// 创建一个列表来存储所有的Future
List<Future<int>> futures = [];

for (int i = 0; i < 1000; i++) {
    // 控制并发数量
    while (concurrencyLimit <= 0) {
      await Future.delayed(Duration(milliseconds: 100));
    }
    // 处理数据 这操作
    concurrencyLimit--;
    
    // 启动一个异步任务并将其Future添加到列表中
    futures.add(() async {

      concurrencyLimit++;
      return i;
    }());

}
// 等待所有的Future完成
await Future.wait(futures);




uuid怎么下载(免费) | 求资源
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。 本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。 如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!
标签
author
pings

每天都在打酱油~

评论
登录后评论