对我来说,DART Isolate看起来像一个带有不同术语的线程(Java / C#)。在哪个方面,Isolate与Thread不同?
答案 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,包括“隔离概念”部分。