美文网首页
关于dart单线程的理解

关于dart单线程的理解

作者: 晨曦中的花豹 | 来源:发表于2022-09-07 16:30 被阅读0次
dart的单线程丝毫没有任何优势可言

关于dart很不好理解的一个地方就是,它是单线程的,如何来处理耗时操作呢?,网上搜索到的都是在说io,网络请求,而这些操作都是只需要发起而不需要我自己做的,或者必需要一直等待的,比如我定外卖,点完之后我就可以放下手机去干别的事情,到时候送过来,我就可以直接吃了,所以对于这样的问题dart单线程是丝毫没有影响的,它只需要触发这个任务,对应模块处理完成后回调告诉它就可以了,但是如果这件事情必须要自己处理,比如我有一个任务整体耗时需要1s,即使我将它放到异步去处理,他还是会占用当前的线程1s,而这1s线程是不能处理别的任务的,导致的结果就是,页面会卡死,比如这段代码,loading图标会卡死

@override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.white,
      // appBar: AppBar(
      //   title: Text("ceshi"),
      // ),
      body: Center(
        child: CircularProgressIndicator(
          valueColor: AlwaysStoppedAnimation<Color>(Colors.black),
          strokeWidth: 2,
        ),
      ),
      floatingActionButton: FloatingActionButton(
        child: Text("按钮"),
        onPressed: () async {
          sleep(Duration(seconds: 1));
        },
      ),
    );
  }

所以dart的单线程适用范围是比较窄的,不能像原生一样开启子线程那样灵活自如

iOS多线程与dart单线程对比:

在iOS中有一个主线程(UI线程),需要执行耗时操作通常会开启子线程去处理,而dart中没有子线程,只有特定的几个场景有对应的模块执行而已,所以原生相当于可以随时创建出手臂,用来处理任何耗时操作,而dart只有出厂安装好的几个手臂,如果想干别的耗时操作,只能是通过Isolate来完成,而Isolate并不如子线程那样舒适.

所以这样理解后会发现他就相当于原生的UI线程,也只能是线性的执行任务,网上说的dart单线程多么厉害,看看就好了

关于Isolate他还不能简单的认为是dart中的多线程,首先通过测试,创建一个Isolate耗时很严重,跟原生(比如GCD)的性能差距很大,其次数据不共享,要通过通信方式传递参数,非常不方便,最后是代码量,写一个简单的Isolate通信需要写很多代码,而GCD就显得从容了很多

DispatchQueue.global().async {
        //异步执行任务
        DispatchQueue.main.async {
            //回调主线程
        }

      }

所以对于dart单线程我没有感觉到任何的优点,反而是复杂操作,远不如原生灵活

我觉得如果dart引入子线程会更加的好用

相关文章

  • 关于dart单线程的理解

    dart的单线程丝毫没有任何优势可言 关于dart很不好理解的一个地方就是,它是单线程的,如何来处理耗时操作呢?,...

  • Flutter之Dart异步实现

    1、Dart是单线程模型 Dart是单线程的,那么如何实现耗时操作呢?Dart是基于单线程加事件循环来完成耗时操作...

  • Dart学习笔记08-异步

    Dart是单线程的,Dart基于单线程加事件循环来完成耗时操作的处理,下图为Dart官方提供的Dart运行原理图。...

  • Flutter 异步编程:Futures、Isolates、Ev

    Dart 是一种单线程语言 首先,大家需要牢记,Dart 是单线程的并且 Flutter 依赖于 Dart。 重点...

  • Day04-Dart-基础语法三:异步

    概述 Dart的异步模型 Dart的异步操作 Dart的异步补充 一、Dart的异步模型 1.1、Dart是单线程...

  • Flutter中的异步

    Dart是flutter开发语言。我们经常听说Dart是一门单线程的语言,这里说的单线程并不是说dart没有或不能...

  • Flutter 之多线程

    首先声明Dart是单线程语言,也就是说它没有像OC、Swift 那样复杂的多线程控制。也就可以理解为 Dart只有...

  • flutter-isolate详解

    一. isolate简介 Dart 是单线程,Dart 为我们提供了 isolate,isolate 跟线程差不多...

  • Flutter启动流程(Isolate机制+创建流程+线程练习)

    Flutter是使用Dart语言为基础的,所以它的线程机制使用的也是Dart的线程机制。Dart 是单线程,Dar...

  • Dart值得注意的知识点(三)

    1.Dart的异步模型 1.1 Dart是单线程的 开发中的耗时操作: 如何处理耗时的操作呢? 1.2 Dart事...

网友评论

      本文标题:关于dart单线程的理解

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