Windows下多線程編程

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章