Realm C++ SDK 버전 v2.2.0

Scheduler.hpp

1
2//
3//저작권 2022 Realm Inc.
4//
5// Apache 라이선스, 버전 2.0("라이선스")에 따라 라이선스가 부여됩니다.
6// 라이선스를 준수하는 경우를 제외하고는 이 파일을 사용할 수 없습니다.
7// 다음에서 라이선스 사본을 얻을 수 있습니다.
8//
9// http://www.apache.org/licences/LICENSE-2.0
10//
11// 관련 법률에서 요구하거나 문서로 동의하지 않는 한, 소프트웨어
12// 라이선스에 따라 배포되는 것은 '있는 그대로' 배포됩니다,
13// Express 묵시적이든 어떤 종류의 보증이나 조건도 제공하지 않습니다.
14// 권한을 관리하는 특정 언어에 대한 내용은 라이선스를 참조하세요.
15// 라이선스에 따른 제한 사항.
16//
18
19#ifndef CPPRALM_SCHEDULER_HPP
20#define CPPRALM_SCHEDULER_HPP
21
22#include <functional>
23#include <future>
24#include <queue>
25
26네임스페이스 영역 {
27 구조체 스케줄러 {
28 가상 ~scheduler() = 기본값;
29
30 // 스케줄러의 스레드에서 지정된 함수를 호출합니다.
31 //
32 // 이 함수는 모든 스레드에서 호출할 수 있습니다.
33 가상 oid invoke(std::function<oid()> &&) = 0;
34
35 // 호출자가 현재 스케줄러의 스레드에서 실행 확인합니다.
36 //
37 // 이 함수는 모든 스레드에서 호출할 수 있습니다.
38 [[nodiscard]] 가상 bool is_on_thread() const noException = 0;
39
40 // 이 스케줄러 인스턴스 가 동일한 기본 인스턴스 를 래핑하는지 확인합니다.
41 // 이는 플랫폼에 따라 다르지만 이 메서드가 true를 반환하면
42 // 캐싱이 발생할 수 있습니다.
43 가상 bool is_same_as(const 스케줄러 *other) const noException = 0;
44
45 // 이 스케줄러가 실제로 invoke()를 지원 수 있는지 확인합니다. 호출은 다음과 같습니다.
46 // 구현되지 않았거나, 스케줄러 유형에 적용할 수 없거나,
47 // 현재 가능(예: 관련 이벤트 루프가 실제로
48 // 실행).
49 //
50 // 이 함수는 스레드로부터 안전하지 않습니다.
51 [[nodiscard]] 가상 bool can_invoke() const noException = 0;
52 };
53}
54#endif //CPPREALM_SCHEDULER_HPP
정의: Scheduler.hpp:27