既然hack是单线程语言,那么使用并发块的好处是什么呢?
concurrent {
await func_a;
await func_b;
}
我的理解是一项工作在等待另一项工作结束。
并发并不意味着多线程
并发块将等待该块中的所有异步操作(可等待对象),类似于javascriptPromise.all
(也是单线程)。
没有并发:
await func_a; // 1 sec
await func_b; // 2 sec
await func_c; // 3 sec
// will get here after at least 6 seconds (sum of requests time)
与并发:
concurrent {
await func_a; // 1 sec
await func_b; // 2 sec
await func_c; // 3 sec
}
// will get here after at least 3 seconds (longest request time)
与如果您想并行地进行多个IO请求。
不适合如果您想运行多个CPU作业。