#include <chrono>
#include <functional>
#include <iostream>
#include <thread>
using namespace std;
int main() {
const chrono::microseconds ms = chrono::microseconds(100);
auto run = [](chrono::microseconds ms, function<void()> func) {
auto start = chrono::high_resolution_clock::now();
int count = 0;
do {
++count;
func();
} while (chrono::high_resolution_clock::now() < (start + ms));
cout << count << endl;
};
run(ms, []() {});
run(ms, []() { this_thread::yield(); });
run(chrono::microseconds(0), [ms]() { this_thread::sleep_for(ms); });
return 0;
}