问题标签 [fiber]

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 投票
9 回答
58677 浏览

multithreading - 线和纤维有什么区别?

线和纤维有什么区别?我听说过 ruby​​ 中的纤维,并且我听说它们有其他语言版本,有人可以简单地向我解释一下线程和纤维之间的区别。

0 投票
6 回答
11585 浏览

c++ - 轻量级、可移植的 C++ 光纤,MIT 许可证

我想获得一个具有 MIT 许可证(或更宽松)的轻量级、便携式光纤库。Boost.Coroutine 不合格(不是轻量级的),Portable Coroutine Library 和 Kent C++CSP(都是 GPL)也不合格。

编辑:你能帮我找一个吗?:)

0 投票
3 回答
1142 浏览

ruby - 如何将 Ruby1.9 与鞋子一起使用?

鞋子包装了它自己的 Ruby 安装,对吧?

我不能使用 Ruby1.9 特性的 Fiber。而且,我想使用 Fiber 来创建生成器。

这是我的代码(因此您可以确保问题不在于我的代码):

如果我制作了这样的鞋子应用程序:

如果我拉起鞋子控制台,我会看到错误:

因为,它说 Fiber 是一个未初始化的常量,要么我的代码有问题,要么这个 Ruby 版本不知道 Fiber 类 - 后者应该是这种情况。

我在确定 Ruby 的版本(我的 mac 安装为 1.8)时看到了这个问题,但我不知道如何更改版本。

0 投票
4 回答
5395 浏览

ruby - 枚举器如何在 Ruby 1.9.1 中工作?

这个问题不是关于如何在 Ruby 1.9.1 中使用枚举器,而是我很好奇它们是如何工作的。这是一些代码:

在上面的代码中,我可以使用e = Bunk.new.each, 然后e.nexte.next来获取每个连续的元素,但是它究竟是如何暂停执行然后在正确的位置恢复呢?

我知道,如果将其中的产量0.upto替换为Fiber.yieldthen 很容易理解,但这里并非如此。这是一个普通的旧的yield,那么它是如何工作的?

我查看了 enumerator.c 但对我来说几乎无法理解。也许有人可以在 Ruby 中提供一个实现,使用纤维,而不是 1.8.6 风格的基于延续的枚举器,这一切都清楚了吗?

0 投票
3 回答
4298 浏览

c# - C# 中的 Fibers:它们是否比迭代器更快,人们使用过它们吗?

因此,我与一位同事讨论了有关Fiber的问题,并从 2003 年开始阅读这篇论文,该论文描述了使用 Fiber API 在 C# 中实现协程。

本文中的实现Yield是针对 .NET 1.1 的,因此它早yield return于 .NET 2.0 中出现的语法。

乍一看,这里的实现可能更快,并且可以很好地跨多个 CPU 扩展。

有人用过吗?

0 投票
3 回答
11999 浏览

c# - .net 中有光纤 api 吗?

出于好奇,我一直在寻找一组 C#/.net 类来支持纤维/协同例程(win32 版本)并且没有任何运气。

有人知道这样的野兽吗?

0 投票
5 回答
1620 浏览

network-programming - 支持纤程/协程的脚本语言?

我想用一种语言开始一个新的网络服务器项目,该语言支持通过纤程也就是协程又称为用户模式线程的并发性。确定我的选择到底是什么非常困难,因为术语“协程”似乎很松散地用于表示各种事物,而“纤维”几乎专门用于参考 Win32 API。

出于这个问题的目的,协程/纤维:

  • 支持通过从嵌套函数中向调用函数产生结果来暂停执行的方法(即在调用协程/光纤的调用堆栈中的任意深度)
  • 支持在当前执行点将控制权转移到另一个任意协程(即让出一个没有调用你的协程的协程)

我有哪些语言选项?我知道 Ruby 1.9 和 Perl (Coro) 都有支持,还有什么?任何具有成熟 gc 和动态方法调用的东西就足够了。

0 投票
8 回答
15609 浏览

ruby - 异步发出多个 HTTP 请求

此代码以同步方式工作。第一个请求,第二个,第三个。我想异步发送所有请求并在所有请求urls完成后打印。

最好的方法是什么?Fiber 适合这种情况吗?

0 投票
6 回答
67726 浏览

c# - C#中的协程

我正在寻找在 c# 中实现协同例程(用户调度线程)的方法。使用 c++ 时,我使用的是纤维。我在互联网上看到 C# 中不存在光纤。我想获得类似的功能。

是否有任何“正确”的方式在 C# 中实现协程?

我曾考虑使用在调度程序线程上获取单个执行互斥锁 + 1 的线程来实现这一点,该线程为每个协程释放此互斥锁。但这似乎非常昂贵(它强制每个协程之间进行上下文切换)

我也看到了 yield 迭代器功能,但据我了解,您不能在内部函数中 yield(仅在原始 ienumerator 函数中)。所以这对我没什么好处。

0 投票
4 回答
2550 浏览

concurrency - 幕后的 Erlang 进程是什么?

我对 Erlang 的了解非常有限,但据我所知,它可以以非常低的成本产生“进程”。

所以我想知道,幕后的那些“过程”是什么?

它们是纤维吗?线程?续集?