问题标签 [rxcpp]

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 投票
2 回答
2436 浏览

c++ - C++ 中的 RxCpp 响应式扩展

我有一个 Win32 控制台应用程序,并且我已经导入了对 Rx 的引用。Intellisense 允许我这样做......

然后我有许多可用的类,例如 ISubject/Subject 和 IObserver/Observer。但是没有 IObservable。我对缺少 Cpp 的 Rx 文档感到有点担心。我是否缺少任何明显的资源?

我尝试过 Channel9、Google、Stackoverflow 和 Facebook 群组。这是我制作的工作 C# 代码,我想让它与 C++ 一起工作。这个函数合并了来自不同观察源的所有数据,并将其作为一个列表输出。

所以矩阵一从源一出现,矩阵二从源二出现。它们通过 id 匹配,并作为列表一起推送。

这里的任何帮助都会很好。找不到我想要的某些类,并且语法的其他方面有所不同。是否有任何资料或示例可以显示 C++ 中的工作方式。大概可以从这些推断出来。

这是该问题的原始帖子。

http://social.msdn.microsoft.com/Forums/en-US/58a25f70-a7b8-498b-ad7a-b57f3e1152da/rxcpp?forum=rx

我之前也尝试过在这里问,但没有任何回应。希望这会更有成果,现在我有更多关于我想要实现的目标的信息。

谢谢你。

0 投票
1 回答
2182 浏览

c# - 创建一个可以在 RxCpp 中取消订阅的 Observable

我正在从 C# 中移植一些严重依赖 Rx 的代码,但我很难找到一些最常用的 C# 方法的 C++ 等效项。

特别是,我想从订阅/取消订阅逻辑创建一个 observable。在 C# 中,我使用Observable.Create<TSource> Method (Func<IObserver<TSource>, Action>)覆盖来创建一个 observable。例如

是否可以对RxCpp做同样的事情?我认为答案在于rx::observable<>::create(OnSubscribe os)方法,但我不知道如何使用它来“注册”退订 lambda。

0 投票
1 回答
2902 浏览

c++ - Rxcpp 中的调度程序

我试图找出Rx的 C++版本中的调度模型。

了解 C# 版本,其中有一个带有一个 Schedule 方法的简单接口;C++ 版本似乎相当复杂,包含调度程序、工作程序和协调等内容。

对我来说,一个主要的缺失部分是线程池调度程序的实现,它是否存在其他名称?我将如何实现它自己?我应该把它写在PPL (Windows) 之上吗?如果我需要在它上面有一个序列化的(Actor like)观察者,我应该使用什么?在这里这里偷看可以表明这不是一项微不足道的任务。

这确实有助于获得有关该主题的某种概述,因为官方文档是自动生成的并且仍然非常稀疏。

0 投票
1 回答
1881 浏览

c++ - RxCpp:观察者的生命周期,如果使用 observe_on(rxcpp::observe_on_new_thread())

如果观察者正在使用 observe_on(rxcpp::observe_on_new_thread()),等待所有观察者 on_completed 被调用的正确方法是什么:

例如:

我的问题是如何等到 s1 的 on_completed 完成而不必设置和轮询一些变量。

使用observe_on() 的动机是因为值上通常有多个观察者,我希望每个观察者同时运行。也许有不同的方法可以实现相同的目标,我愿意接受您的所有建议。

0 投票
2 回答
1300 浏览

c++ - 使用 rxcpp 进行调度和超时处理

我不熟悉使用 rxcpp 并尝试在以下情况下将某些功能组合在一起:

我有一个数据源,它将从一个单独的源检索命令,我正在编写的代码会将这些命令检索到一个 rxcpp observable 中。它有一个特殊的条件,如果在一定时间内没有收到命令,订阅者会运行 onError 函数而不是 onNext,但超时只能发生在收到第一个命令之前。在接收到第一个命令后,无论它需要多长时间才能接收到任何进一步的命令,都不会发生超时。

我正在尝试通过以下方式完成此操作:

我遇到的问题是超时发生在收到任何命令之前,即使它们在超时发生之前很远。我已经尝试过从 1000 毫秒到 5000 毫秒的超时,这没有任何区别。但是,如果我删除超时代码,则会立即收到命令。我怀疑我很可能只是误解了如何在 rxcpp 中使用调度程序,所以我想知道如何实现这一点。

0 投票
1 回答
757 浏览

android - 为 Android 编译 rxcpp

我从github下载RxCpp,修改CMakeLists.txt如下(我使用微软修改的CMake,以便用VS2015构建跨平台项目):

使用以下命令创建了 Project.sln 解决方案:

我稍微调整了 CMake 构建的项目,以便:

  1. 启用对 C++11 的支持
  2. 启用例外
  3. STL 的使用:GNU STL 静态库 (gnustl_static)

我使用以下代码添加了一个简单的 cpp 文件:

项目无法编译并给出数百个错误。如果我只是尝试使用这一行进行编译:

一切正常。如果我做

智能感知似乎只是识别一些方法(不多)。我不清楚发生了什么。我被困住了。有人对尝试什么有一些建议吗?有人在为 Android 编译 RxCpp 方面取得了一些成功吗?

//更新 - 2016 年 3 月 1 日

经过一些分析,大多数错误消息不是编译错误,而是与智能感知错误有关。所以现在库编译成功。我设置了一个使用简单 c++ 函数的简单 Xamarin 应用程序,如下所示:

如果我在手机上编译和部署一切正常(甚至认为真的没有使用“反应性”代码......)。问题是当我取消注释以下行时:

然后程序编译正常(没有错误),生成了 libTest.so(大小几乎是注释行版本的两倍)但是一旦调用 Test2() 函数,我得到:

System.DllNotFOundException:libTest.so

我检查了 adb.exe,确实 libTest.so 存在于:/data/data/"package_name"/lib/

这是怎么回事?

//更新 - 2016 年 6 月 1 日

最后我找到了一些时间来准备一个重现问题的 repo:

https://github.com/easysoft2k15/AndroidRxCppTest.git

我的怀疑是,由于某些原因,当我包含使应用程序崩溃的行时,.so lib 的大小会增加超过一定限制,因此 Android 不再加载它。您的想法将不胜感激。

谢谢你

亚历山德罗

0 投票
1 回答
562 浏览

c++ - 使用 rxcpp 对函数进行分组?

我正在尝试了解 RxCpp(来自 Microsoft 的反应式扩展的本机 cpp 实现)的要点,以查看是否可以在项目中使用它,但我无法理解这些概念。

如果我有一个具有以下结构的可观察模板:

我将如何创建另一个包含按性别分组的可观察对象,其中包含所有事件的人数、最小年龄、最大年龄和平均年龄?

我查看了示例,但看不到如何一次获得多个聚合。

0 投票
2 回答
549 浏览

c++ - RXcpp 从函数连续流数据

我正在学习 C++ 的响应式,我正在寻找一些指导。我创建了一个函数来等待事件然后返回它。我想捕捉反应式异步发生的所有事件并在它们发生时处理它们。这是我到目前为止所拥有的:

我似乎得到了错误:没有函数模板实例 "rxcpp::observable::create" 与参数列表匹配。我是否需要制作自己的模板或其他东西才能观察到 ALLEGRO_EVENT?

0 投票
1 回答
543 浏览

c++ - rxcpp - 为什么当一个可观察对象发出一个值时不调用所有观察者的 on_next 函数

我试图了解如何使用 rxcpp,我的印象是,当一个 observable 发出一个值时,所有订阅的观察者都会通过调用他们的 on_next() 方法得到通知,并将发出的值传递给他们。

以下示例并非如此:

我希望输出类似于:

即当新值出现时,所有订阅的观察者都会调用 on_next。

相反,输出实际上是:

0 投票
1 回答
288 浏览

c++ - rxcpp:嵌套的while循环或类似的“经典”程序命令结构

我有一个可以传输一些事件的设备。我想使用响应式扩展来模拟以下行为:

  1. 检测用户何时连接加密狗(我的程序检查加密狗连接的事件)。
  2. 连接加密狗后开始从加密狗捕获数据流。
  3. 能够检测到加密狗何时断开并返回到 1.,稍后如果用户再次连接加密狗,我想转到 2. 在我流式传输数据的状态下,如果键盘被击中,则程序结束。

我知道如何等待加密狗连接(1.):

而且我知道如何捕获流(2.):

我的问题是我不知道如何组合流以回到 1. 和稍后 2. 我只知道如何按顺序执行此操作。但我想要上述行为。