4

对我来说,DART Isolate 看起来像一个具有不同术语的线程 (Java/C#)。Isolate 与 Thread 在哪个方面不同?

4

1 回答 1

7

线程使用共享内存,隔离不使用。

例如,Java/C# 中的以下伪代码

class MyClass {
  static int count = 0;
}

// Thread 1: 
MyClass.count++;
print(MyClass.count); // 1;

// Thread 2:
MyClass.count++;
print(MyClass.count); // 2;

这也存在共享内存被两个线程同时修改的风险。

而在 Dart 中,

class MyClass {
  static int count = 0;
}

// Isolate 1: 
MyClass.count++;
print(MyClass.count); // 1;

// Isolate 2:
MyClass.count++;
print(MyClass.count); // 1;

隔离物彼此隔离。它们之间通信的唯一方法是传递消息。一个隔离器可以侦听另一个隔离器的回调。

在此处查看文档,包括“隔离概念”部分。

于 2013-02-19T12:22:36.223 回答