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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

5.事件

發布時間:2025/3/20 编程问答 12 豆豆
生活随笔 收集整理的這篇文章主要介紹了 5.事件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在之前的課程里面講過,線程在進入臨界區之前會調用WaitForSingleObject或者WaitForMultipleOobjects,此時如果有信號,線程會從函數中退出并進入臨界區,如果沒有信號那么線程將自己掛入等待鏈表,然后將自己掛入等待網,最后切換線程

其他線程在適當的時候,調用方法修改被等待對象的 SignalState 為有信號(不同的等待對象,會調用不同的函數),并將等待該對象的其他線程從等待鏈表中摘掉,這樣,當前線程便會在 WaitForSingleObject 或者 WaitForMultipleObjects 恢復執行(在哪切換在哪開始執行),如果符合喚醒條件,此時會修改 SignalState 的值,并將自己從等待網上摘下來,此時的線程才是真正的喚醒。

被等待對象不同,主要在2個點上會有差異:

創建事件對象:信號

測試代碼:

HANDLE g_hEvent;VOID WINAPI ThreadProc1(LPVOID text) {::WaitForSingleObject(g_hEvent, INFINITE);printf("ThreadProc1函數執行...\n"); }VOID WINAPI ThreadProc2(LPVOID text) {::WaitForSingleObject(g_hEvent, INFINITE);printf("ThreadProc2函數執行...\n"); }VOID WINAPI ThreadProc3(LPVOID text) {::WaitForSingleObject(g_hEvent, INFINITE);printf("ThreadProc3函數執行...\n"); }int main() {//默認安全屬性 對象類型 初始狀態 名字g_hEvent = ::CreateEvent(NULL, false, FALSE, NULL);HANDLE hThread[3];//創建3個線程hThread[0] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadProc1, NULL, 0, NULL);hThread[1] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadProc2, NULL, 0, NULL);hThread[2] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadProc3, NULL, 0, NULL);//設置事件為已通知SetEvent(g_hEvent);//等待線程結束 銷毀內核對象WaitForMultipleObjects(3, hThread, TRUE, INFINITE);CloseHandle(hThread[0]);CloseHandle(hThread[1]);CloseHandle(hThread[2]);CloseHandle(g_hEvent);getchar();return 0; } //參數1:默認安全屬性 //參數2:對象類型 //參數3:初始化的事件狀態 //參數4:名稱 CreateEvent(NULL, TRUE, FALSE, NULL);//如果參數2為true 通知類型對象,false 事件同步對象 //如果參數3為false未通知,true已通知_DISPATCHER_HEADER +0x000 Type //對應上面第2個參數 +0x001 Absolute +0x002 Size +0x003 Inserted +0x004 SignalState //對應上面第3個參數 +0x008 WaitListHead

SetEvent函數分析

SetEvent對應的內核函數: KeSetEvent

  • 修改信號值SignalState為1
  • 判斷對象類型
  • 如果類型為通知類型對象(Type 0) 喚醒所有等待該狀態的線程
  • 如果類型為事件同步對象(Type 1) 從鏈表頭找到第一個
  • 還是這個偽代碼

    while(true)//每次線程被其他線程喚醒,都要進入這個循環{if(符合激活條件)//1超時 2等待對象SignalState > 0{//1修改SignalState //2退出循環}else//SignalState不大于0 也沒超時{if(第一次執行){//將當前線程的等待塊掛到等待對象的鏈表 (WaitListHead) 中;//將自己掛入等待隊列(KiaitListHead)//切換線程...再次獲得CPU時,從這里開始執行}}} 1)線程將自己+5c位置清0 2)釋放_KWAIT_BLOCK所占內存

    如果事件類型為TRUE,跳到這

    《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

    總結

    以上是生活随笔為你收集整理的5.事件的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 欧美毛片网站 | 福利精品视频 | 爱逼av | 玖草视频在线观看 | 日本熟妇人妻中出 | 6680新视觉电影免费观看 | 闺蜜张开腿让我爽了一夜 | 国产欧美日韩三级 | 国产综合精品一区二区三区 | 国产精品大片 | 色一情一区二 | 色婷婷综合久久久中文字幕 | 8x8x成人 | 国产视频一区二区在线播放 | 欧美啪啪一区二区 | 国产日韩欧美久久 | 国产欧美精品久久久 | 人妻夜夜爽天天爽 | 日本黄色片段 | 西西44rtwww国产精品 | 肥婆大荫蒂欧美另类 | 欧美丝袜一区二区三区 | 男女激情大尺度做爰视频 | 91亚洲一区二区三区 | 亚洲一区二区三区欧美 | 精品人妻少妇嫩草av无码专区 | 午夜精品在线观看 | 久久色图| 亚洲性综合 | 日韩成人久久 | 日韩福利电影在线 | 东京久久 | 欧美精品二区 | 亚洲最大成人综合网 | 一级草逼片| 国产色视频一区二区三区qq号 | 日本午夜三级 | 色天天 | 国产在成人精品线拍偷自揄拍 | 艳妇乳肉豪妇荡乳av无码福利 | 亚洲三区精品 | 亚洲精品天堂成人片av在线播放 | 91精品国产aⅴ一区二区 | 会喷水的亲姐姐 | 在线观看视频一区二区三区 | 日本在线观看一区 | 免费观看国产视频 | 日本中文有码 | 日韩精品第一 | 国产一区二区自拍视频 | 亚洲一级在线观看 | 久色资源 | 国产免费高清视频 | 操操操操网 | www.黄色片网站 | 538国产精品一区二区免费视频 | 欧美一区二三区 | 黄色美女大片 | 欧美在线观看一区二区三区 | 亚洲人视频在线 | 国产在线激情 | 今天高清视频在线观看视频 | 久久精品国产99久久不卡 | 亚洲成人999 | 精品乱子伦一区二区三区 | 99re在线观看视频 | 国产精品va无码一区二区 | 欧美被狂躁喷白浆精品 | 免费看黄色三级 | 毛片毛片毛片毛片毛片 | 免费黄网站在线看 | 日韩三级在线免费观看 | 九九在线观看高清免费 | 伊人焦久影院 | 怡红院成人网 | 免费av国产 | 久久国产片 | 欧美日韩一区二区久久 | 日本wwwwww | 9l蝌蚪porny中文自拍 | www.欧美激情 | 欧美无极品 | 狠狠夜 | 国产一级影院 | 久久亚洲影视 | 欧美视频精品 | 亚洲免费毛片 | 欧美9999 | 激情久久婷婷 | 人人爽人人插 | 久久免费影院 | 久久久久午夜 | www国产亚洲精品久久网站 | 综合一区| 蜜桃91精品入口 | 日韩乱码一区二区三区 | 午夜av成人| 成人欧美性| 欧美成人三级视频 |