• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 131, comments - 12, trackbacks - 0, articles - 0
              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            http://hi.baidu.com/andywangcn/item/50d640c325290a2aef4665c4
            1、 啟動(dòng)線(xiàn)程:

            CWinThread* AfxBeginThread( 線(xiàn)程函數(shù),this );

            2、通常導(dǎo)致線(xiàn)程終止的兩種情況是:控制函數(shù)退出或不允許線(xiàn)程完成運(yùn)行。如果字處理器使用后臺(tái)打印線(xiàn)程,若成功完成打印,則控制函數(shù)將正常終止。但是,如果用戶(hù)要取消打印,后臺(tái)打印線(xiàn)程則不得不提前終止。本主題介紹如何實(shí)現(xiàn)每一種情況,以及在終止后如何獲取線(xiàn)程的退出代碼。

            (1)正常線(xiàn)程終止

            對(duì)于輔助線(xiàn)程,正常線(xiàn)程終止很簡(jiǎn)單:退出控制函數(shù)并返回表示終止原因的值。可以使用 函數(shù)或 return 語(yǔ)句。一般情況下,0 表示成功完成,但這取決于您自己。

            對(duì)于用戶(hù)界面線(xiàn)程,該過(guò)程也很簡(jiǎn)單:從用戶(hù)界面線(xiàn)程內(nèi)調(diào)用 Platform SDK 中的 。PostQuitMessage 采用的唯一參數(shù)是線(xiàn)程的退出代碼。對(duì)于輔助線(xiàn)程,0 通常表示成功完成。

            (2)過(guò)早的線(xiàn)程終止

            過(guò)早終止線(xiàn)程幾乎一樣簡(jiǎn)單:從線(xiàn)程內(nèi)調(diào)用 。將所需的退出代碼作為唯一參數(shù)傳遞。這將停止執(zhí)行線(xiàn)程、解除對(duì)線(xiàn)程堆棧的分配、分離附加到線(xiàn)程的所有 DLL 并從內(nèi)存中刪除線(xiàn)程對(duì)象。

            必須從要終止的線(xiàn)程內(nèi)調(diào)用 AfxEndThread。如果要從其他線(xiàn)程終止線(xiàn)程,必須設(shè)置兩個(gè)線(xiàn)程間的通信方法。

            舉一個(gè)例子:

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

            成員變量 m_hThreadEvent;

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

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

                     for ( ; ; )

                     {         DWORD dwRetVal;

                               dwRetVal = WaitForSingleObject( m_hThreadEvent, 100 );

                               if ( dwRetVal == WAIT_TIMEOUT )

                                    {                    // TODO:

                               }

                               else

                               {

                                        // stop receive text thread.

                                        DWORD dwExitCode;

                                        GetExitCodeThread( m_pThreadRecv->m_hThread, &dwExitCode );

                                        AfxEndThread( dwExitCode, TRUE );

                               }

                     }

                要結(jié)束線(xiàn)程時(shí),使用SetEvent,將信號(hào)量置為有信號(hào)。

                該線(xiàn)程是在信號(hào)量有信號(hào)時(shí),退出。

            (3)TerminateThread

            在CWinThread對(duì)象中有線(xiàn)程的句柄,可以使用該句柄強(qiáng)行殺死線(xiàn)程。但是不推薦使用這種方式,當(dāng)可以正常結(jié)束的時(shí)候,選擇前兩種方法較好。

            檢索線(xiàn)程的退出代碼

            若要獲取輔助線(xiàn)程或用戶(hù)界面線(xiàn)程的退出代碼,請(qǐng)調(diào)用 函數(shù)。有關(guān)此函數(shù)的信息,請(qǐng)參見(jiàn) Platform SDK。此函數(shù)獲取線(xiàn)程(存儲(chǔ)在 CWinThread 對(duì)象的 m_hThread 數(shù)據(jù)成員中)的句柄和 DWORD 的地址。

            如果線(xiàn)程仍然是活動(dòng)的,GetExitCodeThread 將 STILL_ACTIVE 放置在提供的 DWORD 地址中;否則將退出代碼放置在該地址中。

            檢索 對(duì)象的退出代碼還需要一步。默認(rèn)情況下,當(dāng) CWinThread 線(xiàn)程終止時(shí),刪除該線(xiàn)程對(duì)象。這意味著不能訪問(wèn) m_hThread 數(shù)據(jù)成員,因?yàn)?CWinThread 對(duì)象不再存在。若要避免出現(xiàn)這種情況,請(qǐng)執(zhí)行以下操作之一:

            • 將 m_bAutoDelete 數(shù)據(jù)成員設(shè)置為 FALSE。這使 CWinThread 對(duì)象在線(xiàn)程終止后仍可以繼續(xù)存在。然后可以在線(xiàn)程終止后,訪問(wèn) m_hThread 數(shù)據(jù)成員。但是,如果使用此方法,就得銷(xiāo)毀 CWinThread 對(duì)象,因?yàn)榭蚣懿粫?huì)自動(dòng)刪除該對(duì)象。這是首選方法。

            • 單獨(dú)存儲(chǔ)線(xiàn)程的句柄。創(chuàng)建線(xiàn)程后,(使用 ::DuplicateHandle)將其 m_hThread 數(shù)據(jù)成員復(fù)制到其他變量,并通過(guò)該變量訪問(wèn)該成員。這樣,終止后即會(huì)自動(dòng)刪除對(duì)象,并且仍然可以找到線(xiàn)程終止的原因。請(qǐng)注意:在可以復(fù)制句柄之前,線(xiàn)程不終止。執(zhí)行此操作的最安全的方式是將 CREATE_SUSPENDED 傳遞到 ,存儲(chǔ)句柄,然后通過(guò)調(diào)用 繼續(xù)執(zhí)行線(xiàn)程。

            任一方法都可以使您確定 CWinThread 對(duì)象終止的原因。


            只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            久久久久人妻一区精品色| 国产精品久久久久久久久免费| 久久99精品国产麻豆婷婷| 久久黄视频| 亚洲色大成网站WWW久久九九| 亚洲国产精品无码久久久不卡| 91精品国产色综合久久| 亚洲一区精品伊人久久伊人| 精品国产乱码久久久久久人妻| 欧美精品一本久久男人的天堂| 久久午夜综合久久| 久久久久久久99精品免费观看| 午夜视频久久久久一区 | 99久久国产热无码精品免费久久久久| 久久久久香蕉视频| 久久精品国产福利国产秒| 伊人久久综合无码成人网| 国产女人aaa级久久久级| 91久久精一区二区三区大全| 伊人久久无码中文字幕| 日韩AV毛片精品久久久| 久久国产视屏| 亚洲天堂久久精品| av国内精品久久久久影院| 中文字幕日本人妻久久久免费| 久久久久亚洲精品天堂久久久久久| AV无码久久久久不卡蜜桃| 久久人人妻人人爽人人爽| 亚洲精品无码久久千人斩| 久久这里的只有是精品23| 久久久噜噜噜久久| 久久国产三级无码一区二区| 狠狠精品久久久无码中文字幕 | 国产成人精品久久免费动漫 | 久久精品www| 久久综合中文字幕| 伊人久久大香线焦综合四虎| 国产精品久久国产精品99盘 | 99麻豆久久久国产精品免费| av午夜福利一片免费看久久| 狠狠88综合久久久久综合网 |