#include <iostream>
#include <thread>
using namespace std;
void foo() {
cout << "Thread id: "<<this_thread::get_id()<<endl;
}
int main() {
cout << "Supported hardware concurrency: "<<thread::hardware_concurrency()<<endl;
thread t1(foo);
cout << "Native handle: "<<t1.native_handle() <<endl;
thread t2,t3;
t3=thread(foo); // move assignement t3 start foo now
//t2=t3; // not possible to copy
t2=move(t3); // t2 takes over what t3 was representing
t1.join();
t2.join();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dGhyZWFkPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKCnZvaWQgZm9vKCkgewoJY291dCA8PCAiVGhyZWFkIGlkOiAiPDx0aGlzX3RocmVhZDo6Z2V0X2lkKCk8PGVuZGw7IAp9CgppbnQgbWFpbigpIHsKCWNvdXQgPDwgIlN1cHBvcnRlZCBoYXJkd2FyZSBjb25jdXJyZW5jeTogIjw8dGhyZWFkOjpoYXJkd2FyZV9jb25jdXJyZW5jeSgpPDxlbmRsOyAKCQoJdGhyZWFkIHQxKGZvbyk7Cgljb3V0IDw8ICJOYXRpdmUgaGFuZGxlOiAiPDx0MS5uYXRpdmVfaGFuZGxlKCkgPDxlbmRsOyAKCgl0aHJlYWQgdDIsdDM7Cgl0Mz10aHJlYWQoZm9vKTsgICAvLyBtb3ZlIGFzc2lnbmVtZW50IHQzIHN0YXJ0IGZvbyBub3cKCS8vdDI9dDM7ICAgICAgICAgIC8vIG5vdCBwb3NzaWJsZSB0byBjb3B5Cgl0Mj1tb3ZlKHQzKTsgICAgICAvLyB0MiB0YWtlcyBvdmVyIHdoYXQgdDMgd2FzIHJlcHJlc2VudGluZyAKCQoJdDEuam9pbigpOwoJdDIuam9pbigpOyAKCXJldHVybiAwOwp9