问题标签 [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.

0 投票
0 回答
47 浏览

node.js - 光纤重启回调问题

我想停止(优雅地或不优雅地)通过光纤运行的功能。Fibers 有 throwInto() 和 reset() 方法来做到这一点。但是当我使用它时,我的回调重新启动。你知道为什么吗 ?

这是我所做的一个小例子。

代码:

输出 :

0 投票
1 回答
179 浏览

ruby - 与 Fibers 的简单并行性?

我正在尝试使用两个 Fiber 验证基本的产量/恢复模式。但是,产量/恢复机制似乎不起作用。我尝试了一些变化,但找不到我的错误。

预期的事件顺序:

  1. 启动线程(时间 0)
  2. 等到第一次返回(时间+2秒)
  3. 等到第二次返回(时间+2秒)
  4. 完成(时间 > +3 秒)

尝试#1

这导致:

添加第二个resume会导致 FiberError。

尝试#2

这导致:

在这两种情况下,开始/结束时间是相同的,并且不返回结果。

0 投票
2 回答
298 浏览

ruby - Ruby 光纤:恢复传输的光纤

我试图了解以下代码片段的行为。我的重点是Fiber#transfer方法。

我已经用右侧的预期执行顺序对代码行进行了编号。一旦fiber3.resume返回并调用,我希望在标记为#10fiber2.resume的行内继续执行。相反,我收到以下错误:fiber2

这是清单最后一行报告的错误:fiber2.resume.

0 投票
1 回答
75 浏览

javascript - 纤维在流星反应中不起作用 - 错误:流星代码必须始终在纤维中运行

我在流星中使用纤维+在服务器端做出反应。我创建了一个 api(使用灵活的:restivus 包的大气js),但我在服务器的日志中收到错误

我收到以下错误:

0 投票
1 回答
54 浏览

node.js - Meteor Fibers 错误 - 跨不同版本的 Meteor

我有 3 个不同版本的流星应用程序

  • 应用#1 (v1.2.1)
  • 应用#2 (v1.3.2.1)
  • 应用#3 (v1.4.1)

应用程序 #1 和 #3 运行良好。但是 App#2 收到以下错误消息

module.js:340 错误:找不到模块“纤维”

无奈之下,我将 App#2 升级到 v1.3.3,现在运行正常。但现在 App#1 收到相同的错误消息。有人可以向我解释为什么以及该怎么做吗?我已经从头开始重新安装了 Meteor,但并没有什么不同。任何帮助将不胜感激,因为这让我发疯。

0 投票
3 回答
552 浏览

c++ - 为什么我的 boost 光纤代码死锁

我已经尝试过 boost::fibers::barrier ,但我无法找出以下代码死锁的原因:

如果我将启动设置为“调度”,它可以通过。所以它有一些运行顺序,但我不知道出了什么问题。所以我试图想象锁定是如何在幕后进行的,什么在运行等等,但我就是不知道为什么原始代码无法完成。

如果有人不想尝试,让我把我看到的输出放在这里:

我已将我的自定义测试调度程序算法复制到测试代码中,我看到,过了一会儿,没有可用于运行的光纤,本地 id 1 光纤根本无法继续。

Boost 版本为 1.63,带有 Visual Studio 2015 预编译包,编译为 64 位

0 投票
1 回答
195 浏览

c++ - 我得到了'boost::fibers::lock_error',但不知道为什么

我运行这段代码

我得到了

它打印的最后一个日志在 _mutex.lock() 之前。如果 t 不是静态变量,则不会抛出任何错误。如果我在主函数中删除 t.flush(),它不会抛出任何错误。使用我在笔记中写的 std::lock_guard ,它旁边的行没有打印出来。我无法弄清楚我尝试过的案例的原因和差异是什么。

我使用 gcc 5.4.0 构建代码,使用 -O0

0 投票
3 回答
3549 浏览

c++ - 如何正确使用 boost 上下文

我想使用纤维为我的游戏引擎实现一个作业系统。在网上搜索了一个很好的纤维 c++ 实现后,我发现Boost.Context是一个很好的起点。

更新 1:我想实现自己的调度算法,因此Boost.FiberBoost.CoroutineBoost.Coroutine2不适合我的实现。

在为 x64 架构编译 boost 并尝试运行 boost文档中的基本示例后,我得到了以下异常:

boost::context::detail::forced_unwind 在内存位置

这是我尝试运行的代码(Visual Studio 2015 企业版,Windows 7):

代码运行正确(正确输出:0 1 1 2 3 5 8 13 21 34 55),但是当它完成运行时出现异常。

更新 2:仅发布版本发生异常

我想问两个关于提升上下文的问题:

1)是什么导致了堆栈展开异常,如何避免?

2)我发现 boost 文档有点肤浅,并且找不到任何其他关于如何使用 boost 上下文的教程。你能指导我一些关于提升上下文的好资源/教程吗?

0 投票
0 回答
209 浏览

node.js - 在 Windows 操作系统的 Meteor 中找不到模块“纤维”

我尝试通过使用 Future 来使用var Future = require('fibers/future'). 我使用meteor npm install --save fibers, meteor npm install fibers, npm install -g fibers, meteor npm install --save node-gyp, and npm install -g node-gyp` 安装了光纤。

我在imports文件夹,accessToken文件中使用了future。该文件被导入到服务器文件夹文件中。在构建应用程序时,没有错误。但是当我访问主页时,我收到找不到模块“纤维”的错误。

0 投票
1 回答
1560 浏览

c++ - 无法编译 boost::fiber 官方示例

我正在尝试 boost::fiber 库,但我无法使用 boost Fiber 编译代码。因此,我转而编译和运行 boost 官方示例。我安装了最新版本的boost library 1.65.1,安装似乎没问题。我执行了以下命令来编译 simple.cpp

但我收到以下抱怨: