-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathmain.cpp
More file actions
71 lines (65 loc) · 2.25 KB
/
Copy pathmain.cpp
File metadata and controls
71 lines (65 loc) · 2.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include "stdafx.hpp"
using namespace ve;
int main() {
get_fiber_manager()->add(std::make_unique<fiber>("Teste 1", [] {}));
get_fiber_manager()->add(new fiber("Teste 2", [] {}));
std::vector<std::pair<std::string, std::function<void()>>> fibers = {
{
"Teste 1", [] {
std::cout << "Teste 1 Validated\n";
}
},
{
"Teste 2", [] {
std::cout << "Teste 2 Validated\n";
}
},
{
"Teste 4", [] {
std::cout << "Teste 4 Validated\n";
}
}
};
get_fiber_manager()->add(fibers);
get_fiber_manager()->add("Teste 1", [] {});
get_fiber_manager()->list_active_fibers();
get_fiber_manager()->resume("Teste 2");
get_fiber_manager()->suspend("Teste 2");
get_fiber_manager()->terminate("Teste 2");
get_fiber_manager()->find("Teste 2");
get_fiber_pool()->initialize(5);
get_fiber_pool()->add([] {}, 0);
get_fiber_pool()->resize(7);
get_fiber_pool()->set_max_jobs(5);
auto stats = get_fiber_pool()->get_stats();
std::cout << "=== Statistiques de Fiber Pool ===\n";
std::cout << "Jobs en attente : " << stats.pending_jobs << "\n";
std::cout << "Jobs executes : " << stats.executed_jobs << "\n";
std::cout << "Fibres actives : " << stats.active_fibers << "\n";
get_fiber_pool()->set_job_added_callback([](const ve::job& j) {
std::cout << "[Callback] Job ajoute avec priorite " << j.priority << "\n";
});
get_fiber_pool()->set_job_executed_callback([](const ve::job& j) {
std::cout << "[Callback] Job execute avec priorite " << j.priority << "\n";
});
get_fiber_pool()->set_job_rejected_callback([](const ve::job& j) {
std::cerr << "[Callback] Job rejete : file d'attente pleine (priorite " << j.priority << ")\n";
});
auto job_func = [](int id) {
std::cout << "Execution du job " << id << "\n";
std::this_thread::sleep_for(std::chrono::milliseconds(100));
};
for (int i = 0; i < 10; ++i) {
bool success = get_fiber_pool()->add([=] { job_func(i); }, i % 3, std::chrono::milliseconds(i * 50));
if (!success) {
std::cerr << "[Main] Job " << i << " n'a pas pu etre ajoute.\n";
}
}
get_fiber_manager()->resize(7);
while (true) {
get_fiber_manager()->initialize();
get_fiber_pool()->tick();
}
get_fiber_manager()->cleanup();
get_fiber_pool()->cleanup();
}