欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
VC 線(xiàn)程間通信

1.使用全局變量(窗體不適用)
     實(shí)現線(xiàn)程間通信的方法有很多,常用的主要是通過(guò)全局變量、自定義消息和事件對象等來(lái)實(shí)現的。其中又以對全局變量的使用最為簡(jiǎn)潔。該方法將全局變量作為線(xiàn)程監視的對象,并通過(guò)在主線(xiàn)程對此變量值的改變而實(shí)現對子線(xiàn)程的控制。
     由于這里的全局變量需要在使用它的線(xiàn)程之外對其值進(jìn)行改變,這就需要通過(guò)volatile關(guān)鍵字對此變量進(jìn)行說(shuō)明。使用全局變量進(jìn)行線(xiàn)程通信的方法非常簡(jiǎn)單,通過(guò)下面給出的示例代碼能夠對其有一個(gè)基本的認識。

 

2.利用自定義消息(可適用于窗體)

    全局變量在線(xiàn)程通信中的應用多用在主線(xiàn)程對子線(xiàn)程的控制上,而從子線(xiàn)程向主線(xiàn)程的信息反饋則多采用自定義消息的方式來(lái)進(jìn)行。這里對自定義消息的使用同使用普通自定義消息非常相似,只不過(guò)消息的發(fā)送是在子線(xiàn)程函數中進(jìn)行的。該方法的主體是自定義消息,應首先定義自定義消息并添加對消息的響應代碼。

      用PostMessage()或SendMessage()消息傳遞函數.


3.使用事件內核對象(相當好用)
    利用事件(Event)內核對象對線(xiàn)程的通信要復雜些,主要通過(guò)對事件對象的監視來(lái)實(shí)現線(xiàn)程間的通信。事件對象由CreateEvent()函數來(lái)創(chuàng )建,具有兩種存在狀態(tài):置位與復位,分別由SetEvent()和ResetEvent()來(lái)產(chǎn)生。事件的置位將通過(guò)WaitForSingleObject()或WaitForMultipleObjects()之類(lèi)的通知等待函數繼續執行。

// 事件句柄
HANDLE hEvent = NULL;

UINT ThreadProc7(LPVOID pParam)
{
                 while(true)
                 {
                               // 等待事件發(fā)生
                               DWORD dwRet = WaitForSingleObject(hEvent, 0);
                               // 如果事件置位則退出線(xiàn)程,否則將繼續執行
                               if (dwRet == WAIT_OBJECT_0)
                                            break;
                               else
                               {
                                            Sleep(2000);
                                            AfxMessageBox("線(xiàn)程正在運行!");
                               }
                 }
              
                 AfxMessageBox("線(xiàn)程終止運行!");
                 return 0;
}
……
void CSample06View::OnEventStart()
{
                 // 創(chuàng )建事件  
                 hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
              
                 // 啟動(dòng)線(xiàn)程
                 AfxBeginThread(ThreadProc7, NULL);
}

void CSample06View::OnEventEnd()
{
                 // 事件置位
                 SetEvent(hEvent);            
}

    上面這段代碼展示了事件對象在線(xiàn)程通信中的作用。在創(chuàng )建線(xiàn)程前首先創(chuàng )建一個(gè)事件對象hEvent,這里CreateEvent()函數所采用的四個(gè)參數分別表示句柄不能被繼承、事件在置位后將由系統自動(dòng)進(jìn)行復位、事件對象初始狀態(tài)為復位狀態(tài)和不指定事件名。在創(chuàng )建的子線(xiàn)程中使用WaitForSingleObject()對hEvent進(jìn)行監視。WaitForSingleObject()的函數原型為:

                 DWORD WaitForSingleObject(
                               HANDLE hHandle,                             //等待對象的句柄
                               DWORD dwMilliseconds           //超過(guò)時(shí)間間隔
                 );

    函數將在hHandle對象有信號時(shí)或是在等待時(shí)間超出由dwMilliseconds設定的超時(shí)時(shí)間間隔返回。其返回值可以為WAIT_ABANDONED、WAIT_OBJECT_0和WAIT_TIMEOUT,分別表示被等待的互斥量(Mutex)對象沒(méi)有被釋放、等待的對象信號置位和超時(shí)。通過(guò)對返回值的判斷可以區分出引起WaitForSingleObject()函數返回的原因。在本例中只關(guān)心WAIT_OBJECT_0的返回值,當通過(guò)SetEvent()將hEvent置位后即可使WaitForSingleObject()立即返回并通過(guò)跳出循環(huán)而結束線(xiàn)程。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
多線(xiàn)程同步-event
C++實(shí)現線(xiàn)程同步的四種方式總結
孫鑫VC視頻教程筆記之第十六課(上)“線(xiàn)程同步”
C語(yǔ)言實(shí)現簡(jiǎn)易聊天室
WinCE 控制面板和驅動(dòng)通信 .
VC知識庫文章 - 學(xué)習多線(xiàn)程之一:線(xiàn)程通信--利用事件對象
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久