日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

线程池之工作项,等待项,计时项 (存在疑问???)

發布時間:2025/3/20 编程问答 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 线程池之工作项,等待项,计时项 (存在疑问???) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

線程池函數允許我們做:
1.以異步方式調用函數??//工作項
2.每隔一段時間調用一個函數?//計時項
3.在內核對象觸發時調用一個函數?//等待項
4.在異步I/O請求完成時調用一個函數 //I/O項

2.每隔一段時間調用一個函數
如果兩個:周期的每隔5-7秒執行一段代碼,周期的每隔6-8秒執行一段代碼。
不用線程池將有兩個線程執行,上下文切換不好,如用線程池,系統可能選擇6秒間隔只喚醒一個線程執行這兩段代碼。

3.在內核對象觸發時調用一個函數
同上類似,各個線程WaitForSingleObject各自的內核對象,如用線程池用一個線程WaitForMultipleObjects 最多MAXIMUM_WAIT_OBJECTS個內核對象
一旦回調函數被調用過,必須SetThreadpoolWait再注冊下,否則 等待項 是不活躍狀態不會再調用回調函數

?

#include <Windows.h>// C RunTime Header Files #include <string>PTP_WORK g_pWorkItem = NULL; volatile LONG g_nCurrentTask = 0;void NTAPI TaskHandler(PTP_CALLBACK_INSTANCE Instance, PVOID Context, PTP_WORK Work) {LONG currentTask = InterlockedIncrement(&g_nCurrentTask);wprintf(L"[%u] Task #%u is starting.\n", GetCurrentThreadId(), currentTask);// Simulate a lot of workSleep(currentTask * 1000);wprintf(L"[%u] Task #%u is done.\n", GetCurrentThreadId(), currentTask);InterlockedDecrement(&g_nCurrentTask); }void Work(void) {// Create the work item that will be used by all tasks//(1)create 線程池工作項g_pWorkItem = CreateThreadpoolWork(TaskHandler, NULL, NULL);if (g_pWorkItem == NULL) {wprintf(L"Impossible to create the work item for tasks.\n");return;}wprintf(L"----Start a new batch----\n");for(int i = 4; i > 0; --i){//(2)submit workSubmitThreadpoolWork(g_pWorkItem);}wprintf(L"4 tasks are submitted.\n");//Waits for outstanding work callbacks to complete and optionally cancels pending callbacks that have not yet started to execute.//(3)wait for work overWaitForThreadpoolWorkCallbacks(g_pWorkItem,FALSE);// Don't forget to delete the work item//(4)delete work itemCloseThreadpoolWork(g_pWorkItem); }PTP_TIMER g_timer = NULL; volatile LONG g_nSecLeft = 10; VOID CALLBACK TimeoutCallback(PTP_CALLBACK_INSTANCE pInst, PVOID pvContext, PTP_TIMER pTimer) {LONG current = InterlockedDecrement(&g_nSecLeft);if(current == 0){SetThreadpoolTimer(g_timer,NULL,0,0); //pftDueTime為NULL時,將停止調用定時器函數wprintf(L"time out----\n");}else{wprintf(L"[%u] call timer callback function #%u is left.\n", GetCurrentThreadId(), current);} }void Timer(void) {g_timer = CreateThreadpoolTimer(TimeoutCallback,NULL,NULL);// Start the timer in one second to trigger every 1 secondULARGE_INTEGER ulRelativeStartTime;ulRelativeStartTime.QuadPart = (LONGLONG) -1; // start nowFILETIME ftRelativeStartTime;ftRelativeStartTime.dwHighDateTime = ulRelativeStartTime.HighPart;ftRelativeStartTime.dwLowDateTime = ulRelativeStartTime.LowPart;SetThreadpoolTimer(g_timer, &ftRelativeStartTime, 1000, // Triggers every 1000 millisecondsINFINITE//0);//WaitForThreadpoolTimerCallbacks(g_timer,FALSE); //Why this will fail?getchar();CloseThreadpoolTimer(g_timer); }VOID NTAPI pttwaitcallback(_Inout_ PTP_CALLBACK_INSTANCE Instance,_Inout_opt_ PVOID Context,_Inout_ PTP_WAIT Wait,_In_ TP_WAIT_RESULT WaitResult) {wprintf(L"waitResult is WAIT_OBJECT_0 + %d.\n",WaitResult); }void WaitKernelObject() {PTP_WAIT pwait = CreateThreadpoolWait(pttwaitcallback,NULL,NULL);HANDLE hEvent1 = CreateEventW(NULL,FALSE,FALSE,L"event1");HANDLE hEvent2 = CreateEventW(NULL,FALSE,FALSE,L"event2");SetThreadpoolWait(pwait,hEvent1,NULL);SetEvent(hEvent1); //here will make pwait 不活躍狀態, 此狀態不會再去調回調函數。getchar();SetThreadpoolWait(pwait,hEvent2,NULL); //不活躍狀態后需要重新設置SetEvent(hEvent2);//WaitForThreadpoolWaitCallbacks(pwait,FALSE);getchar();CloseThreadpoolWait(pwait); } int wmain() {//Work();Timer();//WaitKernelObject();wprintf(L"it is over\n");getchar();return(0); }


?

總結

以上是生活随笔為你收集整理的线程池之工作项,等待项,计时项 (存在疑问???)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久综合| 午夜影音 | 午夜福利理论片在线观看 | 99久久综合| 毛片网站在线播放 | 国产精品久久国产 | 日韩av影片 | 91久久精品日日躁夜夜躁国产 | 青青视频一区二区 | 国产做爰xxxⅹ高潮视频12p | 做爰无遮挡三级 | 中国肥胖女人真人毛片 | 久久精品一区二区三区黑人印度 | 国产一区二区三区色淫影院 | 午夜免费福利网站 | 97人妻天天摸天天爽天天 | 天天干天天操天天舔 | a视频免费在线观看 | 在线国产播放 | 天堂av资源网 | 免费网站在线观看视频 | 国产91色在线 | 国产自在线拍 | 国内精品卡一卡二卡三 | 久久精品日| 日本十八禁视频无遮挡 | 最近中文字幕mv免费高清在线 | 人妻巨大乳hd免费看 | 精品国产乱码久久久久久预案 | 国产免费观看av | 神马午夜伦理影院 | 欧美成人专区 | 波多野结衣免费观看视频 | 人人射人人 | 国产熟妇久久777777 | 91伊人网| 亚洲免费小视频 | 欧美黄色一级视频 | 久久无码人妻丰满熟妇区毛片 | 国产香蕉久久 | 日本精品三区 | 欧美综合影院 | 黑人多p混交群体交乱 | 男人和女人日b视频 | 亚洲精品国偷拍自产在线观看蜜桃 | 亚洲做受高潮 | 麻豆传媒网站在线观看 | 伊人88 | 国产一级淫片a视频免费观看 | 免费成年人视频在线观看 | 饥渴的少妇和男按摩师 | 中文字幕日产乱码中 | 中文字幕在线免费观看视频 | 免费黄片毛片 | 胸网站 | 嫩草嫩草嫩草嫩草嫩草 | 狠狠爱欧美 | 交做爰xxxⅹ性爽 | 亚洲一区二三区 | 一区二区高清在线观看 | 欧美性生交片4 | 91打屁股| 秋霞影院午夜 | 免费在线观看成年人视频 | 人妻丰满熟妇无码区免费 | 牛牛澡牛牛爽一区二区 | 韩国成人在线 | 久久亚洲精少妇毛片午夜无码 | 欧美日本亚洲 | 亚洲精华国产精华精华液网站 | 中文成人无字幕乱码精品区 | 自拍 亚洲 欧美 | 干骚视频 | 久久久久久久久久久国产 | 成人精品三级av在线看 | 男女在线观看视频 | www.夜色 | 国产福利精品视频 | 欧美不卡在线视频 | 91亚洲国产成人久久精品网站 | 在线h片| 亚洲国产欧美视频 | 蜜臀av中文字幕 | 成人在线三级 | hd极品free性xxx护士 | 91激情视频在线 | 欧美性xxxx图片 | 国产午夜一区二区三区 | 韩日视频在线观看 | 国产玖玖 | 欧美在线一区二区三区四区 | 精品在线播放 | 闺蜜张开腿让我爽了一夜 | 亚洲国产精品视频在线 | 欧美日韩一区二区区别是什么 | 一区二区啪啪啪 | 老熟妇一区二区三区啪啪 | 激情国产一区 | 欧美国产在线视频 |