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函數異常中斷,可能是因爲該線程已經退出了。