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

时间:2013-02-19 12:15:06

标签: dart

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

1 个答案:

答案 0 :(得分: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;

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

而在达特,

class MyClass {
  static int count = 0;
}

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

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

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

查看docs here,包括“隔离概念”部分。