- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试找出 C++ 中的调度模型 version处方药。
了解 C# 版本,其中有一个带有一个 Schedule 方法的简单接口(interface); C++ 版本看起来相当复杂,有调度程序、工作程序和协调等内容。
对我来说,一个主要缺失的部分是线程池调度程序的实现,是否存在其他名称?我将如何自己实现?是不是应该写在上面PPL ( window )?如果我需要一个序列化的(类似 Actor 的)观察者,我应该使用什么?偷看here和 here可以证明这不是一项微不足道的任务。
这真的有助于获得关于该主题的某种概述,因为 official文档是自动生成的,但仍然非常稀疏。
最佳答案
是的,生成的文档是新的,尚未记录调度。
rxcpp v2 中的调度器基于 RxJava 使用的调度器和工作器构造(Eric Meijer 参与其中)RxJava 的文档将对调度程序和工作程序进行解释。 rxcpp 添加 schedulable、coordination 和 coordinator。
scheduler
拥有由 now()
方法公开的时间线。 scheduler
也是该时间线中 worker
的工厂。由于调度程序拥有时间线,因此可以构建时间旅行的调度程序。虚拟调度程序是测试调度程序的基础,它使用它在毫秒内完成多秒测试。
worker
拥有时间轴的待定 schedulable
队列,并且有生命周期。当到达 schedulable
的时间时,运行 schedulable
。队列维护插入顺序,以便当 N 个 schedulable
具有相同的目标时间时,它们按照插入队列的顺序运行。 worker
保证每个 schedulable
在下一个 schedulable
开始之前完成。当 worker
的生命周期被取消订阅时,所有挂起的 schedulable
都将被丢弃。
schedulable
拥有一个函数并有一个 worker 和一个生命周期。当取消订阅 schedulable
的生命周期时,将不会调用 schedulable
函数。 schedulable
被传递给函数,并允许函数重新安排自己或在同一个 worker 上安排其他事情。
新概念是协调和协调员。我添加这些是为了简化运算符实现并在运算符实现中引入按使用付费。具体来说,在 Rx.NET 和 RxJava 中,运算符使用原子操作和同步原语来协调来自多个流的消息,即使所有流都在同一线程上(如 UI 事件)。 身份_。 . .
默认使用 rxcpp 中的协调,没有开销。 同步_。 . .
和 observe_on_。 . .
协调分别使用 mutex 和 queue-onto-a-worker 来安全地交错多个流。
coordination
是 coordinator
的工厂,并且有一个 scheduler
。
coordinator
有一个worker
,是一个用于协调observable
、subscriber
和 的工厂>可调度
函数。
所有采用多个流或及时处理的运算符(甚至 subscribe_on 和 observe_on)都采用协调参数,而不是调度程序。
这里有一些提供的函数,它们将使用特定的调度程序进行协调。
目前还没有线程池调度器。线程池调度程序需要依赖于线程池实现,因为我不想编写线程池。我的计划是为 windows 线程池和 apple 线程池以及 boost asio 执行器池制作一个调度程序。要回答的一个问题是这些特定于平台的构造是否应该存在于 rxcpp 存储库中或具有特定于平台的存储库。
欢迎贡献、意见和想法!
关于c++ - Rxcpp 中的调度器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30292079/
如果观察者正在使用 observe_on(rxcpp::observe_on_new_thread()),等待所有观察者 on_completed 被调用的正确方法是什么: 例如: { Foo
我试图在我的程序中包含 RxCpp,我注意到,该框架调用了很多发射对象的复制构造函数。 #include #include class Foo { public: Foo() = defa
我正在学习 C++ 的响应式(Reactive),我正在寻找一些指导。我创建了一个函数来等待事件然后返回它。我想捕获响应式(Reactive)异步发生的所有事件并在它们出现时进行处理。这是我到目前为止
我希望创建一个扩展函数,它不关心它接收到的可观察对象的类型。 例如: template inline auto makeones() -> function(observable)> { retur
我正在尝试找出 C++ 中的调度模型 version处方药。 了解 C# 版本,其中有一个带有一个 Schedule 方法的简单接口(interface); C++ 版本看起来相当复杂,有调度程序、工
我在模型 View 设置中使用 RxCpp。一个 View 更新方法订阅了一个 observable(通过 lambda 捕获 this)。如果订阅比 View 实例存活时间更长,则会发生未定义的内存
考虑一个阻塞函数:this_thread::sleep_for(milliseconds(3000)); 我正在尝试获得以下行为: Trigger Blocking Function
我创建了一个名为 validateImplementation 的自定义 rxcpp 运算符,它应该简单地采用通用可观察流,在 SimpleInterface 上进行一些验证,然后继续或结束基于流在特
我正在尝试学习如何在 rxcpp 中创建自定义运算符,并且我能够创建位于 here 中的运算符.但是,我想了解如何创建更多通用运算符来实现 rxo::operator_base 并使用 lift 运算
我刚开始使用 rxcpp 并尝试在以下情况下将某些功能组合在一起: 我有一个数据源将从一个单独的源检索命令,我正在编写的代码会将这些命令检索到一个 rxcpp 可观察对象中。它有一个特殊条件,如果在一
我试图了解 RxCpp 的要点,它是 Microsoft 响应式扩展的 native cpp 实现,看看我是否可以在项目中使用它,但我无法理解这些概念。 如果我有一个具有以下结构的可观察模板: str
我在 C# 中使用 RX 进行编程,现在我希望在 C++ 中使用 rxcpp 进行编程。我正在尝试做最简单的事情,定义 observable 的类成员变量. 问题是 observable定义为: te
我正在使用 RxCPP,但很难理解它的行为。 这里有两个程序,一个在 Rx.Net 中,另一个在 RxCPP 中。他们应该输出相同的打印件,但实际上并没有。 该程序从鼠标流中获取点,并计算点之间的增量
我有一个 Win32 控制台应用程序,我已经导入了对 Rx 的引用。 Intellisense 允许我这样做.... using namespace System::Reactive; using n
我从github上下载了RxCpp,修改CMakeLists.txt如下(为了用VS2015构建跨平台项目,我使用微软修改的CMake): cmake_minimum_required (VERSIO
我需要在 rxcpp 中实现一个相机采样系统。我想象的方式是将 requestStream 作为参数传递并接收 responseStream 每次调用 requestSample 时,都会创建一个新的
我创建了一个简单的 rx 运算符,它可以将字符串流转换为 json 流,并且工作正常。但是,我希望能够引发自定义异常,但我不确定如何调用订阅的 on_error 方法 运算符称为 convertStr
我正在从严重依赖 Rx 的 C# 移植一些代码,但我很难找到一些最常用的 C# 方法的 C++ 等价物。 特别是,我想从订阅/取消订阅逻辑中创建一个可观察对象。在 C# 中,我使用 Observabl
我试图了解如何使用 rxcpp,我的印象是,当一个可观察对象发出一个值时,所有订阅的观察者都会通过调用他们的 on_next() 方法并向他们传递发出的值来得到通知。 下面的例子不是这种情况: aut
我有一个设备可以流式传输一些事件。我想使用响应式扩展来模拟以下行为: 检测用户何时连接加密狗(我的程序检查连接加密狗的事件)。 加密狗连接后开始从加密狗捕获数据流。 能够检测加密狗何时断开连接并返回到
我是一名优秀的程序员,十分优秀!