#include <thread>
#include <iostream>
using namespace std;
volatile bool flag = false;
class ctest{
size_t cnt;
public:
ctest(size_t cnt = 0){
this->cnt = cnt;
}
void inc(){
cnt++;
}
void dec(){
cnt--;
}
size_t count(){
return cnt;
}
static void thread_proc(void * param){
ctest * pthis = (ctest *)param;
if( pthis != 0 )
{
pthis->inc();
flag = false;
}
}
};
int main(){
ctest p;
thread t(ctest::thread_proc, &p);
flag = true;
t.detach();
while( flag ){
//cout<<"\rwait"<<endl;
}
cout<<p.count()<<endl;
return 0;
}
I2luY2x1ZGUgPHRocmVhZD4KI2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwogCnZvbGF0aWxlIGJvb2wgZmxhZyA9IGZhbHNlOwpjbGFzcyBjdGVzdHsKICAgIHNpemVfdCBjbnQ7CiAgICBwdWJsaWM6CiAgICBjdGVzdChzaXplX3QgY250ID0gMCl7CiAgICAgICAgdGhpcy0+Y250ID0gY250OwogICAgfQogICAgdm9pZCBpbmMoKXsKICAgICAgICBjbnQrKzsKICAgIH0KICAgIHZvaWQgZGVjKCl7CiAgICAgICAgY250LS07CiAgICB9CiAgICBzaXplX3QgY291bnQoKXsKICAgICAgICByZXR1cm4gY250OwogICAgfQogICAgc3RhdGljIHZvaWQgdGhyZWFkX3Byb2Modm9pZCAqIHBhcmFtKXsKICAgICAgICBjdGVzdCAqIHB0aGlzID0gKGN0ZXN0ICopcGFyYW07CiAgICAgICAgaWYoIHB0aGlzICE9IDAgKQogICAgICAgIHsKICAgICAgICAgICAgcHRoaXMtPmluYygpOwogICAgICAgICAgICBmbGFnID0gZmFsc2U7CiAgICAgICAgfQogICAgfQp9OwogCmludCBtYWluKCl7CiAgICBjdGVzdCAgcDsKICAgIHRocmVhZCB0KGN0ZXN0Ojp0aHJlYWRfcHJvYywgJnApOwogICAgZmxhZyA9IHRydWU7IAogICAgdC5kZXRhY2goKTsKICAgIHdoaWxlKCBmbGFnICl7CiAgICAJLy9jb3V0PDwiXHJ3YWl0Ijw8ZW5kbDsKICAgIH0KICAgIGNvdXQ8PHAuY291bnQoKTw8ZW5kbDsKICAgIHJldHVybiAwOwp9