问题标签 [fibers]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
multithreading - 为什么我的 Futures 没有最大化 CPU?
我正在创建数百个下载相同文件的请求(这是一个玩具示例)。当我使用 Go 运行等效逻辑时,我得到 200% 的 CPU 使用率,并在约 5 秒内返回(w/800 个请求)。在只有 100 个请求的 Rust 中,它需要将近 5 秒并产生 16 个操作系统线程,CPU 利用率为 37%。
为什么会有这样的差异?
据我了解,如果我有一个跨NCpuPool
个核心的管理s ,这在功能上就是 Go 运行时/goroutine 组合正在做的事情,只是通过光纤而不是期货。Future
从性能数据来看,尽管ThreadPoolExecutor
.
c++ - 使用捕获承诺作为回调的 lambda
我想使用 boost 光纤来完成与外部服务的异步通信。我为每个单独的光纤使用一组承诺和未来,以在单独的阅读器光纤上调用,以唤醒等待未来的发起者光纤。
问题是我无法弄清楚 lambda 函数的类型。我尝试使用 std::function 和 std::bind。但我没有设法找出正确的类型。
回调的结构如下:
它适用于 POD,例如:
但它不适用于 boost::fibers::promise,因为没有复制构造函数:
但是 lambda 本身没有问题,因为它可以正常工作
所以我的问题是,如果我想使用 promise 进行光纤之间的同步,如何正确解决这个问题
ruby - 在 Fiber 中调用 `throw` 时引发 `UncaughtThrowError`
当在 Fiber 的上下文中调用UnknownThrowError
a 时,我遇到了一个问题。throw
我正在运行 Ruby 2.4.1。可以使用示例代码重现该问题,如下所示:
这种行为是预期的吗?我找不到有关 Fibers 的文档。非常感谢任何指导。
java - Quasar Fiber - join() 和 get() 之间的区别
标题说明了一切。这两种方法没有明确说明应该使用哪种方法。
npm - npm 错误!纤维@1.0.15 安装:`node build.js || nodejs build.js`
我正在尝试通过参考文档在我的笔记本电脑上安装 Sunbird 。npm install
但是一步出错
gyp WARN install got an error, rolling back install gyp ERR! configure error gyp ERR! stack Error: unexpected end of file gyp ERR! stack at Zlib.zlibOnError [as onerror] (zlib.js:134:17) gyp ERR! System Linux 4.13.0-37-generic gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild" "--release" gyp ERR! cwd /home/ttpllt23/GIT/snd-setup/sunbird-portal/src/node_modules/fibers gyp ERR! node -v v9.3.0 gyp ERR! node-gyp -v v3.6.2 gyp ERR! not ok node-gyp exited with code:
和
npm ERR! file sh npm ERR! code ELIFECYCLE npm ERR! errno ENOENT npm ERR! syscall spawn npm ERR! fibers@1.0.15 install:
节点构建.js || nodejs build.jsnpm ERR! spawn ENOENT npm ERR! npm ERR! Failed at the fibers@1.0.15 install script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
我正在使用 ubuntu v16.04 节点 v9.3.0
scala - 猫效应纤维自动消除
我对猫的效果很陌生,我已经喜欢并享受它了:)
这是关于纤维的
正如我看到的那样,纤维可以被取消,我试图看看是否有可能有一个带有纤维列表的 IO,当任何纤维发生错误时,可以取消其余的纤维(不确定这是否可以用IO 的纯粹性质)
例如:
有可能实现这样的事情吗?
任何帮助/提示将不胜感激
c++ - boost::fiber 调度 - 何时以及如何
根据文档
当前运行的纤程保留控制权,直到它调用一些将控制权传递给管理器的操作
我只能考虑一种操作——boost::this_fiber::yield
这可能会导致控制从光纤切换到光纤。但是,当我运行类似
我得到像
砰!砰!
\n
\n
这意味着控制在<<
操作员之间从一根光纤传递到另一根光纤。怎么可能发生?为什么?在库的上下文中,控制从光纤到光纤传递的一般定义是什么boost::fiber
?
EDIT001:没有代码就无法逃脱:
输出
2 - 1 - -nan
0.503334 3 - 4 - 0.861055
0.971884 5 - 6 - 0.968536
-nan 7 - 8 - 0.921959
0.9580699
- 10 - 0.948075
0.961811
javascript - 如何确保 Meteor js 后端的繁重任务被执行?
似乎我的繁重任务(每天运行几分钟以重新计算一些东西,使用 SyncedCron 安排)被打断,从而产生不正确/奇怪的结果。现在发生了这种情况,我的网站有多个并发用户。
显然,Meteor 可以很好地处理微任务(如来自客户端的任务)(https://github.com/vsivsi/meteor-job-collection/issues/248),但可能会“饿死”大任务。我能做些什么?
javascript - 未来无法正常工作
错误是不能等待没有光纤请帮我解决这个问题
c++ - 增强纤维工作窃取屏障导致段错误
这是我在 boost 文档中某处找到的关于如何生成工作线程以与纤维 work_stealing 算法一起使用的示例的完整版本。
这在大多数情况下都会导致段错误,我不明白为什么。
这里是cmake文件:
我正在运行 Fedora 28 并使用 gcc 8.1.1 从源代码构建了 Boost,但没有安装它。该项目是使用相同的编译器构建的。(libc++ 没有安装在任何地方。)我得到与 git 分支 master 和 development 以及 1_67_0 相同的行为。我觉得我在这里遗漏了一些明显的东西。