并发性是同时执行多个指令序列,它涉及同时执行多个任务。
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'); }
两个函数(foo和main)不一定每次都以相同的顺序运行,无法保证何时执行 foo 和何时执行 main(),每次运行时,输出都会不同。
输出1
execution from main1 execution from main2 execution from main3 execution from foo ... the message is :Hello!!
输出2
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代码可以从运行代码中产生新的 isolate ,如Java或C#代码可以启动新线程的方式。
参考链接
https://www.learnfk.com/dart-programming/dart-programming-concurrency.html