2._beginthreadex和_beginthread区别
_endthreadex相比_endthread而言更安全。它不会自动关闭当前Thread内核对象的句柄。所以在用_beginthreadex时我们需要用CloseHandle来关闭子线程的句柄。
http://blog.sina.com.cn/s/blog_9635e5ef0101psgk.html
void CJtDevcieSearch::Static_StartReceiveThread(void *arg)
{
CJtDevcieSearch *self = (CJtDevcieSearch *)arg;
std::tr1::shared_ptr<CJtDevcieSearch> m_TmpSelf = self->m_Self;
long use_count = m_TmpSelf.use_count();
self->m_Self.reset();
use_count = m_TmpSelf.use_count();
m_TmpSelf->StartReceiveThread();
// _endthread(); //注意,如该行不注释掉,m_TmpSelf得不到释放
use_count = m_TmpSelf.use_count();
return;
}
{
CJtDevcieSearch *self = (CJtDevcieSearch *)arg;
std::tr1::shared_ptr<CJtDevcieSearch> m_TmpSelf = self->m_Self;
long use_count = m_TmpSelf.use_count();
self->m_Self.reset();
use_count = m_TmpSelf.use_count();
m_TmpSelf->StartReceiveThread();
// _endthread(); //注意,如该行不注释掉,m_TmpSelf得不到释放
use_count = m_TmpSelf.use_count();
return;
}
上面是一个由_beginthread创建的线程,如果运行了_endthread();那么m_TmpSelf 得不到释放,还未深究,由谁知道原因吗????