Realm C++ SDK版本 v 2.2.0

scheduler.hpp

1
2//
3// 版权所有 2022 Realm Inc.
4//
5// 根据 Apache 许可证 2.0 版(“许可证”)获得许可;
6// 除非符合合规,否则不得使用此文件。
7// 您可以在以下网址获取许可证副本:
8//
9// http://www.apache.org/licenses/LICENSE-2.0
10//
11// 除非适用法律要求或书面同意,否则软件
12// 根据许可证分发是按“原样”分发的,
13// 不提供任何类型的Express或暗示的保证或条件。
14// 请参阅管理权限的特定语言的许可证和
15// 许可证下的限制。
16//
18
19#ifndef CPPREALM_SCHEDULER_HPP
20#define CPPREALM_SCHEDULER_HPP
21
22#include<functional>
23#include <future>
24#include <queue>
25
26命名空间域 {
28 虚拟 ~scheduler () = 默认 ;
29
30 // 在调度程序的线程上调用给定函数。
31 //
32 // 可以从任何线程调用该函数。
33 虚拟 void invoke(std::function< void ()> &&) = 0 ;
34
35 // 检查调用者当前是否在调度程序的线程上运行。
36 //
37 // 可以从任何线程调用该函数。
38 [[nodiscard]] virtual bool is_on_thread() const noException = 0 ;
39
40 // 检查此调度程序实例是否包装同一个根本的实例。
41 // 这由平台来定义,但如果此方法返回 true,
42 // 可能会发生缓存。
43 虚拟 bool is_same_as( const scheduler *other) const noException = 0 ;
44
45 // 检查此调度程序是否确实可以支持invoke()。 调用可能是
46 // 要么未实现,要么不适用于调度程序类型,要么根本不适用
47 // 当前可能(例如,如果关联的事件循环实际上不是
48 // 运行).
49 //
50 // 此函数不是线程安全的。
51 [[nodiscard]] virtual bool can_invoke() const noException = 0 ;
52 };
53 }
54#endif //CPREALM_SCHEDULER_HPP
定义: scheduler.hpp: 27