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

打開APP
userphoto
未登錄

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

開通VIP
Windows核心編程(第五版)筆記 第十一章 線程池(The Windows Threa...

第十一章 線程池

 

線程池的目的就是為了減少創(chuàng)建和銷毀線程的額外開銷,利用已經(jīng)存在的線程多次循環(huán)執(zhí)行多個任務從而提高系統(tǒng)的處理能力.

線程池會自動地根據(jù)內(nèi)制的算法增加或減少線程池中的線程或為程序增加新的線程池。

1.異步方法調(diào)用

               

                異步方法調(diào)用有以下兩種方法:

               

                (1)線程函數(shù)原型(回調(diào)函數(shù))

                                VOID NTAPI SimpleCallback

                                (

                                   PTP_CALLBACK_INSTANCE pInstance, // See "Callback Termination Actions" section

                                   PVOID pvContext

                                );

 

                                TrySubmitThreadpoolCallback 

                                該函數(shù)將線程函數(shù)執(zhí)行請求發(fā)到線程池,并將一個"工作項目"添加到線程池的隊列中。

                                注:我們不需要調(diào)用CreateThread函數(shù),線程池中的線程會執(zhí)行我們的回調(diào)函數(shù)

                               

                (2)顯示控制"工作項目"

                                CreateThreadpoolWork           創(chuàng)建一個工作項目

                                SubmitThreadpoolWork          將工作項目提交到線程池中,一個工作項目可以多次提交到線程池中。

                                WaitForThreadpoolWorkCallbacks         等待線程函數(shù)執(zhí)行完畢或取消執(zhí)行線程函數(shù)。

                               

                                CreateThreadpoolWork要求的線程函數(shù)原型:

                                VOID CALLBACK WorkCallback

                                (

                                                PTP_CALLBACK_INSTANCE Instance,

                                                PVOID Context,

                                                PTP_WORK Work

                                );

 

                                VOID WaitForThreadpoolWorkCallbacks

                                (

                                                PTP_WORK pWork,

                                                BOOL     bCancelPendingCallbacks

                                );

 

2.時間間隔內(nèi)調(diào)用函數(shù)

                                (1)CreateThreadpoolTimer要求的線程函數(shù)原型

                                VOID CALLBACK TimeoutCallback

                                (

                                                PTP_CALLBACK_INSTANCE pInstance,   // See "Callback Termination Actions" section

                                                PVOID pvContext,

                                                PTP_TIMER pTimer

                                );

                                (2)步驟

                                                CreateThreadpoolTimer

                                                SetThreadpoolTimer

                                                WaitForThreadpoolTimerCallbacks

                                                CloseThreadpoolTimer

                                               

3.當內(nèi)核對象處于Signal狀態(tài)時調(diào)用函數(shù)

                                當指定的內(nèi)核對象變成Signal狀態(tài)或等待超時,線程池會用戶指定的線程函數(shù)。

                                之后當內(nèi)核對象再次變成Signal狀態(tài)時,線程函數(shù)不會被調(diào)用,除非再次調(diào)用SetThreadpoolWait注冊線程函數(shù)。

                               

                                (1)CreateThreadpoolWait要求的線程函數(shù)原型

                                VOID CALLBACK WaitCallback

                                (

                                                PTP_CALLBACK_INSTANCE pInstance, // See "Callback Termination Actions" section

                                                PVOID Context,

                                                PTP_WAIT Wait,

                                                TP_WAIT_RESULT WaitResult

                                );

 

                                CreateThreadpoolWait

                                SetThreadpoolWait                不允許多次注冊同樣的Handle,但是我們可以用DuplicateHandle函數(shù)復制一個句柄 然后再注冊。

                                WaitForThreadpoolWaitCallbacks

                                CloseThreadpoolWait

 

4.當異步I/O請求結束后調(diào)用函數(shù)

                                To be filled

 

5.回調(diào)終結后的操作和私有線程

                                To be filled

 

6. Common API

                                TrySubmitThreadpoolCallback 

                                CreateThreadpoolWork  SubmitThreadpoolWork  WaitForThreadpoolWorkCallbacks  CloseThreadpoolWork

                                CreateThreadpoolTimer  SetThreadpoolTimer        WaitForThreadpoolTimerCallbacks CloseThreadpoolTimer

                                CreateThreadpoolWait    SetThreadpoolWait          WaitForThreadpoolWaitCallbacks  CloseThreadpoolWait

                                CallbackMayRunLong     DisassociateCurrentThreadFromCallback

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
飛哥教你使用異步編程提升服務性能
異步IO、APC、IO完成端口、線程池與高性能服務器
華為機試HJ49:多線程
線程按指定順序輸出字符到數(shù)組的實例代碼
驅(qū)動自定義回調(diào)例程
c#委托與線程綜合測試實例[原創(chuàng)] - worm128的日志 - 網(wǎng)易博客
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服