123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
-
- #include <chrono>
- #include <iostream>
- #include <string>
- #include <conio.h>
- #include <thread>
-
- #include "librf.h"
-
- using namespace resumef;
-
- future_vt test_sleep_use_timer()
- {
- using namespace std::chrono;
-
- co_await resumef::sleep_for(100ms);
- std::cout << "timer after 100ms." << std::endl;
-
- if (co_await resumef::sleep_until(system_clock::now() + 200ms))
- std::cout << "timer canceled." << std::endl;
- else
- std::cout << "timer after 200ms." << std::endl;
- }
-
- void test_wait_all_events_with_signal_by_sleep()
- {
- using namespace std::chrono;
-
- event_t evts[8];
-
- go[&]() -> future_vt
- {
- if (co_await event_t::wait_all(evts))
- std::cout << "all event signal!" << std::endl;
- else
- std::cout << "time out!" << std::endl;
- };
-
- srand((int)time(nullptr));
- for(size_t i=0; i<_countof(evts); ++i)
- {
- go[&, i]() -> future_vt
- {
- co_await resumef::sleep_for(1ms * (500 + rand() % 1000));
- evts[i].signal();
- std::cout << "event[ " << i << " ] signal!" << std::endl;
- };
- }
-
- while (!g_scheduler.empty())
- {
- g_scheduler.run_one_batch();
- //std::cout << "press any key to continue." << std::endl;
- //_getch();
- }
- }
-
- void resumable_main_sleep()
- {
- go test_sleep_use_timer();
- g_scheduler.run_until_notask();
- std::cout << std::endl;
-
- test_wait_all_events_with_signal_by_sleep();
- std::cout << std::endl;
- }
|