int main() { Thread p(bind(&thr_fn), "thread1"); cout << "tid:" << CurrentThread::tid() <<" name:" << CurrentThread::name() << endl; int ret = p.start(); if(ret < 0) { printf("p start error\n"); assert(0); } obj.value().set_name("main one"); cout << "main set instance name:" << obj.value().name() << endl; ret = p.join(); if(ret < 0) { perror("p join error:"); assert(0); } cout << "finnally main name:" <<obj.value().name() << endl; return 0; }
void thr_fn() { cout << "tid:" << CurrentThread::tid() <<" name:" << CurrentThread::name() << endl; sleep(1); cout << "thread first read name:" << obj.value().name() << endl; obj.value().set_name("thread one"); cout << "thread set read name:" << obj.value().name() << endl; sleep(2); return ; }
const string& Thread::getTidString() { if (t_tidstring.value().empty()) { Thread::ThreadHandle ret_tid; ret_tid = ::pthread_self(); t_tid.value() = ret_tid; char buf[32] = {0}; snprintf(buf, sizeof(buf), "%ll", (uint64_t)ret_tid); t_tidstring.value() = buf; } return t_tidstring; }
Thread::ThreadHandle Thread::getCurrentThreadID() { getTidString(); return t_tid.value(); }