📅  最后修改于: 2020-11-05 04:26:57             🧑  作者: Mango
并发是同时执行多个指令序列。它涉及同时执行多个任务。
Dart使用“隔离”作为并行进行工作的工具。 dart:isolate软件包是Dart的解决方案,用于获取单线程Dart代码并允许应用程序更多地利用可用的硬件。
菌株,顾名思义,是运行代码的独立单元。在它们之间发送数据的唯一方法是传递消息,就像在客户端和服务器之间传递消息的方法一样。隔离可以帮助程序立即利用多核微处理器。
让我们举个例子来更好地理解这个概念。
import 'dart:isolate';
void foo(var message){
print('execution from foo ... the message is :${message}');
}
void main(){
Isolate.spawn(foo,'Hello!!');
Isolate.spawn(foo,'Greetings!!');
Isolate.spawn(foo,'Welcome!!');
print('execution from main1');
print('execution from main2');
print('execution from main3');
}
在这里, Isolate类的spawn方法有助于与我们的其余代码并行运行函数foo 。生成函数带有两个参数-
如果没有对象要传递给生成的函数,则可以将其传递给NULL值。
两个函数(foo和main)不一定每次都以相同的顺序运行。无法保证何时执行foo和何时执行main() 。每次运行时,输出都会不同。
execution from main1
execution from main2
execution from main3
execution from foo ... the message is :Hello!!
execution from main1
execution from main2
execution from main3
execution from foo ... the message is :Welcome!!
execution from foo ... the message is :Hello!!
execution from foo ... the message is :Greetings!!
从输出中,我们可以得出结论,Dart代码可以从运行代码中产生新的隔离,例如Java或C#代码可以启动新线程的方式。
隔离与线程的不同之处在于隔离具有自己的内存。有没有办法之间的分离-THE只能通过消息传递菌株之间进行通信的方式来分享一个变量。
注–对于不同的硬件和操作系统配置,以上输出将有所不同。
异步执行复杂的计算工作对于确保应用程序的响应能力很重要。 Dart Future是一种用于在异步任务完成后获取其价值的机制,而Dart Isolates是抽象化并行性并在实际的高级基础上实施的工具。