首页 > 其他分享 >Future和Isolate有什么区别?

Future和Isolate有什么区别?

时间:2023-08-19 15:22:23浏览次数:48  
标签:Web 区别 Isolate isolate Dart Future 线程 内存

future是异步编程,

调用本身立即返回,并在稍后的某个时候执行完成时再获得返回结果。在普通代码中可以使用await 等待一个异步调用结束。

 

isolate是并发编程,

isolate是有自己的内存和单线程控制的运行实体。isolate本身的意思是“隔离”

Dart 是单线程,Dart 为我们提供了 isolate,isolate 跟线程差不多,它可以理解为 Dart 中的线程。isolate 与线程的区别就是线程与线程之间是共享内存的,而 isolate 和 isolate 之间是内存不共享的,所以叫 isolate (隔离)。因此也不存在锁竞争问题,两个Isolate完全是两条独立的执行线,且每个Isolate都有自己的事件循环,它们之间只能通过发送消息通信,所以它的资源开销低于线程。

所有Dart代码都在isolate中运行,包括最初的main()。

每个isolate都有自己独立的内存,意味着其中所有内存数据,包括全局数据,都仅对该isolate可见,它们之间的通信只能通过传递消息的机制完成,消息则通过端口(port)收发。

isolate只是一个概念,具体取决于如何实现,比如在Dart VM中一个isolate可能会是一个线程,在Web中可能会是一个Web Worker。

 

标签:Web,区别,Isolate,isolate,Dart,Future,线程,内存
From: https://www.cnblogs.com/huangzs/p/17642510.html

相关文章

  • httpGet和httpPost区别
    简单讲讲:Get一般用于从服务器取数据,而且不改变原来的内容;Post一般用于向服务器传递数据,这需要改变服务器的内容。从安全性上考虑,Get的安全性要稍微差点,因为它会把信息直接在地址栏显示出来。但如果对信息的安全性要求比较高的话,优先考虑使用Post。综合,如果没有特殊需要,用Get,......
  • url函数和path函数的区别??
    在Django中,path()和url()都是用于定义URL路由的函数,但它们有一些区别:path()函数:path()函数是Django2版本中引入的新函数,用于定义URL路由。它使用简单的字符串匹配来匹配URL,不支持正则表达式。在path()中,斜杠/被用作路径分隔符,而不需要使用正则表达式中......
  • await this.$nextTick()和this.$nextTick(callback)有什么区别?记一次bug调试
    背景需要实现一个需求,一个小区业务详情页面,在左侧菜单栏切换了小区后,详情页跟着切换。这个详情页面是根据url上的/:id来确定小区id的,所以切换了小区后,应该切换路由。于是这样实现:watch:{//监听小区号变化neighNo(newVal){if(newVal){//切换路......
  • 总结python 元组和列表的区别
    python的基本类型中有元组和列表这么俩个,但是这哥俩却比较难于区分,今天就来用简单的实例说明两者的不同。列表:1.使用中括号([])包裹,元素值和个数可变实例:aaa=['sitename','www','pythontab','com']元组:1.使用中括号(())包裹,不可以被更改(尽管他们的内容可以)bbb=['sitename','www','py......
  • 数字孪生技术与Scada有什么区别?
    虽然SCADA和数字孪生用于工业领域,但它们有不同的用途。SCADA专注于工业过程的实时监测和控制,而数字孪生用于模拟和分析系统的性能。接下来,让我们详细讨论SCADA和数字孪生(SCADA与数字孪生)之间的区别。SCADA与数字孪生的差异SCADA系统专注于工业过程的实时监测和控制,而数字孪生则......
  • 请解释自动装配模式的区别?
    在Spring框架中,自动装配是一种通过Spring容器在应用程序的不同组件之间自动建立依赖关系的机制。它简化了组件之间的配置工作,减少了手动设置依赖的繁琐步骤。Spring提供了几种自动装配模式,其中最常用的有三种:no、byType和byName。no(默认):这是默认的自动装配模式。它表示不进行自动......
  • call,apply,bind的区别
    1.三者都可用于改变函数中this指向,但又有细微区别2.三者的语法传参大致相同,第一个参数表示跟谁建立链接,从第二个参数开始传入具体参数值,但其中apply需要用数组进行传入3.call和apply都可直接调用函数,但bind是返回一个新函数......
  • 委托和事件的区别
    委托的本质,是一个类,而事件,是一个委托类型的私有变量加上两个公有方法(事件的+=和-=),这是本质区别。打个比方,string也是一个类,而strings="a",这个s是string类型的一个变量(略有不恰当,为了方便直观理解)。publicdelegatevoidmyDel();相当于你创建了一个myDel的类,所以委托可以在任......
  • 笔记整理--C语言--数组指针和指针数组的区别 - hongcha_717 - 博客园——转载
    【转载】:原文http://www.cnblogs.com/hongcha717/archive/2010/10/24/1859780.html数组指针和指针数组的区别数组指针(也称行指针)定义int(*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个......
  • 私有云和公有云有什么区别?
    前言私有云和公有云是云计算领域中的两种不同类型的云服务,今天就来给大家讲讲私有云和公有云是什么?它们有什么区别?一、私有云和公有云是什么?1、私有云是什么?私有云是指企业可以完全控制的云计算方式,是为一个客户单独使用而构建的,因而提供对数据、安全性和服务质量的最有效控制......