Realm C++ SDK Versão C++ v2.2.0

Scheduler.hpp

1
2//
3// Autores 2022 Realm Inc.
4//
5// Licenciado sob a Licença Apache, Versão 2.0 (a "Licença");
6// você não pode usar este arquivo, exceto em conformidade com a Licença.
7// Você pode obter uma cópia da Licença em
8//
9// http://www.apache.org/license/LICENSE-2.0
10//
11// A menos que exigido pela lei aplicável ou acordado por escrito, o software
12// distribuído sob a Licença é distribuído "Como está",
13// sem garantias ou condições de qualquer tipo, Express ou implícitas.
14// Consulte a Licença para obter as permissões específicas de domínio do idioma e
15// limitações da Licença.
16//
18
19#ifndef CPPREALM_SCHEDULER_HPP
20#define CPPREALM_SCHEDULER_HPP
21
22#include <functional>
23#include <future>
24#include <queue>
25
26namespace Realm {
27 estrutura, estrutura agendador {
28 virtual ~agendador() = padrão;
29
30 // Invoque a função fornecida no thread do agendador.
31 //
32 // Esta função pode ser chamada de qualquer thread.
33 virtual Invoque o(std::função< nulo ( )> &&)= 0;
34
35 // Verifica se o chamador está em execução no thread do agendador.
36 //
37 // Esta função pode ser chamada de qualquer thread.
38 [[nodiscard]] virtual bool is_on_thread() const noexceto = 0;
39
40 // Verifica se esta instância do agendador envolve a mesma instância subjacente.
41 // Isto cabe às plataformas definir, mas se este método retornar verdadeiro,
42 // pode ocorrer cache.
43 virtual bool is_same_as(agendador const *outro) const noexceto = 0;
44
45 // Verificar se este agendador realmente pode suportar invoke(). Invocar pode ser
46 // não implementado, não aplicável a um tipo de agendador ou simplesmente não
47 // ser possível atualmente (por exemplo, se o loop de eventos associado não for realmente
48 // em execução).
49 //
50 // Esta função não é segura para threads.
51 [[nodiscard]] virtual bool can_invoke() const noexceto = 0;
52 };
53}
54#endif //CPPrealm_SCHEDULER_HPP
Definição: scheduled.hpp:27