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 试图通过隔离提供多线程的一些好处,同时避免共享内存多线程的所有问题。
我对 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 试图通过隔离提供多线程的一些好处,同时避免共享内存多线程的所有问题。