国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
線程啟動與退出
啟動線程:

1. Win32 API

HANDLE hThread = CreateThread( 0, 0, MainFunctionHandler, 0, 0, 0);
    if(hThread == INVALID_HANDLE_VALUE)
    {
        return 0;
    }
    else
    {
        //刪除線程內(nèi)核對象,不影響線程運行,但不再能通過句柄控制該線程。
        //適合有變量控制退出線程的情況
        CloseHandle(hThread);

        return 1;
    }

unsigned long __cdecl MainFunctionHandler( LPVOID pParam ){}


2. MFC
CWinThread* AfxBeginThread(threadfun1,this );

這里threadfun1函數(shù)似乎不能作為類成員,最好作為全局函數(shù)來處理。
而且,AfxBeginThread要求其第一個參數(shù)必須有UINT threadfun1(LPVOID pParam)的簽名格式,否則會報錯。


退出線程:

1.   變量控制
線程一般都在循環(huán)中,當(dāng)滿足一定條件時,return,也會將線程結(jié)束。

while(1)
{
    //邏輯處理
    ......
   
    if(bExit == TRUE)
        return;
}

2.   MFC: AfxEndThread

這個函數(shù)只能用在線程函數(shù)中,當(dāng)滿足一定條件是,調(diào)用。

舉一個例子:

可以創(chuàng)建一個信號量,用WaitForSingleObject函數(shù)來檢測該信號量的狀態(tài)。

成員變量 m_hThreadEvent;

m_hThreadEvent = CreateEvent( NULL, FALSE, FALSE, NULL );


線程的執(zhí)行函數(shù):

DWORD dwRetVal;

dwRetVal = WaitForSingleObject( m_hThreadEvent, INFINATE );

if ( dwRetVal == WAIT_OBJECT_0)

{

    // 退出線程

    DWORD dwExitCode;

    GetExitCodeThread(hThread1, &dwExitCode );
    //這個函數(shù)是獲得線程的退出碼,第一個參數(shù)是線程句柄,用 CreateThread 創(chuàng)建線程時獲得到。
    // 第二個參數(shù)是一個 DWORD的指針,用來保存線程的退出碼

    AfxEndThread( dwExitCode, TRUE );

}


該線程是在信號量有信號時,退出,否則無限等待。

要結(jié)束線程時,使用SetEvent,將信號量置為有信號。


3.   Win32 API:TerminateThread
可以使用線程的句柄強行殺死線程。但是不推薦使用這種方式,當(dāng)可以正常結(jié)束的時候,選擇前兩種方法較好。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
MFC啟動和關(guān)閉線程
C++多線程編程——線程的掛起、喚醒與終止
VC多線程編程學(xué)習(xí)筆記(一)
線程按指定順序輸出字符到數(shù)組的實例代碼
c++多線程的創(chuàng)建掛起執(zhí)行與銷毀
C 多線程
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服