Dart 真的是一种单线程编程语言吗?

Is Dart really a single-threaded programming language?

我对 Dart 还很陌生,还在学习中。据我了解,Dart 在不同的隔离区中执行代码。一个 isolate 可以启动另一个 isolate 来执行一些 long-运行 代码。对于每个隔离区,都有一个线程和为其分配的一些内存。这些 isolate 就像一堆小 VM 一样被隔离。

我还从 Dart 文档中了解到 Dart 是一种单线程语言。但是,想想看,每个 isolate 都有自己的线程。如果isolate A有线程t1,isolate B有线程t2,t1和t2不是同一个线程吧?

如果t1和t2是同一个线程,那么t1和t2不能同时执行代码,这就很可笑了。所以,t1 和 t2 必须是不同的线程。

如果是这样,为什么我们说 Dart 是单线程语言?

是也不是。

“是”的意思是您不必担心锁或互斥锁。

您列出的意义上的“否”。

Dart 试图通过隔离提供多线程的一些好处,同时避免共享内存多线程的所有问题。