美文网首页Flutter
flutter 队列,进行下载排队

flutter 队列,进行下载排队

作者: 代瑶 | 来源:发表于2021-05-27 09:52 被阅读0次
import 'dart:collection';

class MyQueueTask {
  int maxThread = 1;

  MyQueueTask(this.maxThread);

  ///当前任务队列
  Queue<_TaskInfo> _queue = Queue();

  ///是否工作中
  int _taskCount = 0;

  void create(String taskName, Function(String name) workTask) {
    _queue.add(_TaskInfo(taskName, workTask));
    _exec();
  }

  void _exec() async {
    if (_taskCount >= maxThread) return;
    if (_queue.isEmpty) return;

    for (int i = 0; i < maxThread; i++) {
      if (_queue.isEmpty) continue;

      _TaskInfo _taskInfo = _queue.removeFirst();
      _taskCount += 1;
      await _taskInfo.workTask.call(_taskInfo.taskName);
      _taskCount -= 1;
    }
    _exec();
  }
}

class _TaskInfo {
  String taskName;
  Function(String taskName) workTask;

  _TaskInfo(this.taskName, this.workTask);
}


这个下载队列呢,就是一个单管道的, 里面的变量也没做特殊的处理

import 'my_queue_task.dart';

main() async {
  MyQueueTask _queueTask = MyQueueTask(1);
  _queueTask.create("task1", _doTask);
  _queueTask.create("task2", _doTask);
  _queueTask.create("task3", _doTask);
  _queueTask.create("task4", _doTask);
  _queueTask.create("task5", _doTask);

  await Future.delayed(Duration(seconds: 15));
}

Future _doTask(name) async {
  await Future.delayed(Duration(seconds: 2));
  print('触发执行 $name');
  return;
}

每隔两秒输出


image.png

相关文章

  • flutter 队列,进行下载排队

    这个下载队列呢,就是一个单管道的, 里面的变量也没做特殊的处理 每隔两秒输出

  • 【行为型模式十七】命令模式-2(Command)

    3.5 队列请求## 所谓队列请求,就是对命令对象进行排队,组成工作队列,然后依次取出命令对象来执行。多用多线程或...

  • Java—Queue队列详解

    Queue Queue队列介绍   Queue是用于模拟队列的,啥叫队列?队列就是排队的意思,比如排队结账,先进入...

  • Java—Queue队列详解(Deque/PriorityQue

    Queue Queue队列介绍   Queue是用于模拟队列的,啥叫队列?队列就是排队的意思,比如排队结账,先进入...

  • 秒杀场景

    需要一个排队队列和抢购结果队列及库存队列。高并发情况,先将用户进入排队队列,用一个线程循环处理从排队队列取出一个用...

  • MTLCommandQueue

    MTLCommandQueue 对象用于对命令缓冲区的有序列表进行排队,以便 MTLDevice 执行。指令队列是...

  • mac下flutter环境搭建

    1.下载flutter到电脑 1.下载flutter,下载地址:(https://flutter.dev/docs...

  • Flutter 在 Windows 的环境搭建

    安装 Flutter 下载 Flutter 运行如下命令,从 GitHub 下载 Flutter: $ git c...

  • 2022-12-05 面试题

    1.用户下载一个大图片,需要分成很多份进行下载,使用GCD应该如何实现?使用什么队列? 回答:1.并行队列2.如果...

  • Flutter安装指南MAC版

    下载Flutter SDK 使用Git安装 如果已经下载过flutter的,切换到flutter目录去直接 未下载...

网友评论

    本文标题:flutter 队列,进行下载排队

    本文链接:https://www.haomeiwen.com/subject/hfersltx.html