#include <iostream>
#include <thread>
#include <future>
using namespace std;
int main() {
// your code goes here
std::promise<int> promise_that_data_is_loaded;
auto loaded_future = promise_that_data_is_loaded.get_future();
std::thread t([&promise_that_data_is_loaded]()
{
int i =0;
while (i < 100)
{
++i;
}
promise_that_data_is_loaded.set_value(i); //set this after work is done
});
long long int tm = 0;
while(loaded_future.wait_for(std::chrono::seconds(1)) != std::future_status::ready)
{
tm++;
}
cout << tm <<endl;
loaded_future.get();
t.join();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dGhyZWFkPgojaW5jbHVkZSAgPGZ1dHVyZT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCkgewoJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJCgkKCXN0ZDo6cHJvbWlzZTxpbnQ+IHByb21pc2VfdGhhdF9kYXRhX2lzX2xvYWRlZDsKCWF1dG8gbG9hZGVkX2Z1dHVyZSA9IHByb21pc2VfdGhhdF9kYXRhX2lzX2xvYWRlZC5nZXRfZnV0dXJlKCk7CglzdGQ6OnRocmVhZCB0KFsmcHJvbWlzZV90aGF0X2RhdGFfaXNfbG9hZGVkXSgpCgl7CgkJaW50IGkgPTA7CgkgICAgd2hpbGUgKGkgPCAxMDApCgkgICAgewoJICAgIAkrK2k7CgkgICAgfQogICAgCXByb21pc2VfdGhhdF9kYXRhX2lzX2xvYWRlZC5zZXRfdmFsdWUoaSk7IC8vc2V0IHRoaXMgYWZ0ZXIgd29yayBpcyBkb25lCgl9KTsKCWxvbmcgbG9uZyBpbnQgIHRtID0gMDsKCXdoaWxlKGxvYWRlZF9mdXR1cmUud2FpdF9mb3Ioc3RkOjpjaHJvbm86OnNlY29uZHMoMSkpICE9IHN0ZDo6ZnV0dXJlX3N0YXR1czo6cmVhZHkpCgl7CgkgICAgdG0rKzsKCX0KCWNvdXQgPDwgdG0gPDxlbmRsOwoJbG9hZGVkX2Z1dHVyZS5nZXQoKTsKCXQuam9pbigpOwoJcmV0dXJuIDA7Cn0=