Isolate
Isolate中文意思是隔离,是 Dart 中的线程。在 Dart 中 async 和 Future 无法解决所有耗时的工作。
Isolate虽好,但也有合适的使用场景,不建议滥用Isolate,每当我们创建出来一个新的 Isolate 至少需要 2mb 左右的空间甚至更多。
- 方法执行在几毫秒或十几毫秒左右的,应使用Future
- 如果一个任务需要几百毫秒或之上的,则建议创建单独的Isolate
创建Isolate
- Isolate由一对分别由用于接收消息的ReceivePort对象,和用于发送消息的SendPort对象的Port构成。
- 其中SendPort对象不用单独创建,它已经包含在ReceivePort对象之中。
- 需要注意,一对Port对象只能单向发消息,这就如同一根自来水管,ReceivePort和SendPort分别位于水管的两头,水流只能从SendPort这头流向ReceivePort这头。因此,两个Isolate之间的消息通信肯定是需要两根这样的水管的,这就需要两对Port对象。
- 我们可以通过 Isolate.spawn 创建一个 isolate。
static Future<Isolate> spawn<T>(void entryPoint(T message),T message);