DART隔离和线程之间的区别(Java,C#)

Raj*_*san 4 dart dart-isolates

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

Chr*_*ett 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;
Run Code Online (Sandbox Code Playgroud)

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

而在达特,

class MyClass {
  static int count = 0;
}

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

// Isolate 2:
MyClass.count++;
print(MyClass.count); // 1;
Run Code Online (Sandbox Code Playgroud)

分离株彼此隔离.它们之间进行通信的唯一方法是传递消息.一个隔离区可以监听另一个隔离区的回调.

查看此处的文档,包括"隔离概念"部分.