Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 执行co例程时调用堆栈的外观如何?_Javascript_Multithreading_Generator_Coroutine - Fatal编程技术网

Javascript 执行co例程时调用堆栈的外观如何?

Javascript 执行co例程时调用堆栈的外观如何?,javascript,multithreading,generator,coroutine,Javascript,Multithreading,Generator,Coroutine,如何可视化执行协同例程函数的单个线程的调用堆栈 是否有任何语言实现支持在不同线程中运行的共同例程 我遇到了可怕的堆栈溢出问题。在这个问题上,我看到了这一点: [一] 如果您有一个例行程序正在做一些工作,并且它执行您知道将阻塞一段时间的操作(即网络请求),使用协同例程,您可以立即切换到另一个例程,而无需在该决策中包含系统调度程序的开销-是的,程序员必须指定何时可以切换协同例程 在JS中,如果我有一个例程(一些函数),它是CPU绑定的操作(不是IO/网络请求),那么我仍然可以使用协同例程(即JS中的

如何可视化执行协同例程函数的单个线程的调用堆栈

是否有任何语言实现支持在不同线程中运行的共同例程

我遇到了可怕的堆栈溢出问题。在这个问题上,我看到了这一点:

[一] 如果您有一个例行程序正在做一些工作,并且它执行您知道将阻塞一段时间的操作(即网络请求),使用协同例程,您可以立即切换到另一个例程,而无需在该决策中包含系统调度程序的开销-是的,程序员必须指定何时可以切换协同例程


在JS中,如果我有一个例程(一些函数),它是CPU绑定的操作(不是IO/网络请求),那么我仍然可以使用协同例程(即JS中的生成器)?或者我应该使用Web Workers,这样我就不会阻塞事件循环(即至少发生UI渲染)?

让我们看一个简单的生成器示例:

constdoublegen=function*(initValue){
常量值=收益率初始值*2;
返回值*2;
};
常数根=双根(2);
控制台日志(“pre”);
console.log(gen.next());
控制台日志(“中间”);
控制台日志(gen.next(4));

控制台日志(“post”)