1、线程创建
使用_beginthread()函数创建
int rtp_receiver::start_send_thread()
{
m_b_send_thread_runing = true;
m_send_thread_handle = (HANDLE)_beginthread(send_thread_proc, 0, (void*)this);
if (0 == m_send_thread_handle)
{
return -1;
}
return 0;
}
2、线程停止
void rtp_receiver::stop_send_thread()
{
if (false == m_b_send_thread_runing)
{
return;
}
if(0 != m_send_thread_handle)
{
int ret = TerminateThread(m_send_thread_handle, 0);
if(0 == ret)
{
//error occure;
DWORD tmperrno = GetLastError();
}
else
{
CloseHandle(m_send_thread_handle);
}
m_send_thread_handle = 0;
}
m_b_send_thread_runing = false;
}
标志位m_b_send_thread_runing在线程结束后设置为false,如果CloseHandle函数异常中断,可能是因为该线程已经退出了。