gpt4 book ai didi

multithreading - Dart是否会在多核环境中并行执行隔离?

转载 作者:行者123 更新时间:2023-12-03 14:44:43 28 4
gpt4 key购买 nike

问题
Dart中的隔离是否会在多核环境中利用所有可用的核并行运行,还是会在单个核上多路复用?
背景
Google已将Dart编程语言中的隔离(并发单线程单元)描述为“轻量级线程”,该线程在主堆栈上运行而没有阻塞。
因此,在我看来,因为它只能在单个内核上进行多路复用,而不能在SMP,双核,多核或集群环境中的多个内核上并行运行。
虽然,我找不到任何信息,所以我提出了一个谦虚的问题。

最佳答案

警告:以下代码已过期,因此无法在Dart 1.0中使用。

简短答案

可能是。

长答案

dart:isolate library guide指出:“隔离可能会在单独的进程或线程中运行,具体取决于实现。对于Web应用程序,如果可用,隔离可以编译为Web worker。” (我的重点)

运行此代码并观察您的CPU负载将告诉您您的实现是否执行此操作。

#import('dart:isolate');
main() {
for (var tmp = 0; tmp < 5; ++tmp) {
SendPort sendPort = spawnFunction(runInIsolate);
sendPort.call(tmp).then((reply) {
print(reply);
});
}
}

runInIsolate() {
port.receive((msg, SendPort reply) {
var k = 0;
var max = (5 - msg) * 100000000;
for (var i = 0; i < max; ++i) {
i = ++i - 1;
k = i;
}
reply.send("I received: $msg and calculated $k");
});
}

独立的dartvm 并行运行隔离,并利用所有可用的内核。 Dart的浏览器实现可能会根据是否实现Web Workers而有所不同。

关于multithreading - Dart是否会在多核环境中并行执行隔离?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11363676/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com