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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

4.WaitForSingleObject函数分析

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

無論可等待對象是何種類型,線程都是通過:

WaitForSingleObject
WaitForMultipleObjects

進入等待狀態的,這兩個函數是理解線程等待與喚醒進制的核心

WaitForSingleObject參數說明

WaitForSingleObject對應的內核函數:

NTSTATUS stdcall NtWaitForSingleObject ( HANDLE Handle, BOOLEAN Alertable, PLARGE_INTEGER Timeout )

Handle 用戶層傳遞的等待對象的句柄 (具體細節參加句柄表專題)

Alertable 對應 KTHREAD 結構體的 Alertable 屬性如果為1在插入用戶APC時,該線程將被吵醒

Timeout 超時時間



NtWaitForSingleObject

  • 調用ObReferenceObjectByHandle函數,通過對象句柄找到等待對象結構體地址。
  • 調用KeWaitForSingleObject函數,進入關鍵循環。
  • KeWaitForSingleObject:上半部分

    !process 89316020 dt _KTHREAD 892db020 dt _KWAIT_BLOCK 892db020+70

    每個等待塊大小為0x18。

    如果等待3個對象的話它就會占用前3個等待塊,最后一個是給定時器用的。
    如果你有4個等待對象它就不會用這個位置了,它會一次性分配新的空間。

  • 向KTHREAD(+70)位置的等待塊賦值。
  • 如果超時時間不為0, KTHREAD(+70)第四個等待塊與第一個等待塊關聯起來:第一個等待塊指向第四個等待塊,第四個等待塊指向第一個等待塊。
  • KTHREAD(+5C)指向第一個KWAIT_BLOCK
  • 進入關鍵循環
  • KeWaitForSingleObject的關鍵循環

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

    WaitForSingleObject參數說明

    kd> dt _DISPATCHER_HEADER nt!_DISPATCHER_HEADER+0x000 Type //該對象類型+0x001 Absolute +0x002 Size +0x003 Inserted+0x004 SignalState //該分發器信號狀態 (值大于0就是有信號 分發器對象也稱為同步對象)+0x008 WaitListHead //雙向鏈表頭,鏈著所有等待塊(此鏈表包含了所有正在等待該分發器對象的線程)

    不同的等待對象,用不同的方法來修改_DISPATCHER_HEADER(SignalState)比如:如果可等待對象是EVENT,其他線程通常使用SetEvent來設置SignalState= 1并且,將正在等待該對象的其他線程喚醒,也就是從等待鏈表(KiWaitListHead)中摘出來。但是, SetEvent函數并不會將線程從等待網上摘下來,是否要下來,由當前線程自己來決定。

    關于強制喚醒
    在APC專題講過,當我們插入一個用戶APC時(Alertable=1),當前線程是可以被喚醒的,但并不是真正的喚醒。
    因為,如果當前的線程在等待網上,執行完用戶APC后,仍然要進入等待狀態。

    總結

    以上是生活随笔為你收集整理的4.WaitForSingleObject函数分析的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: jzzijzzij亚洲成熟少妇在线观看 久久久精品人妻一区二区三区 | 国产一级片播放 | 2022av视频| 欧美中文网| 亚洲精品乱码久久久久久蜜桃动漫 | 曰本三级日本三级日本三级 | 国产大奶在线观看 | 日本女教师电影 | 浪浪视频污 | 野花视频在线观看免费 | av在线黄 | 精品中文在线 | 欧美xxxx83d| 中文字幕av一区二区三区谷原希美 | 影音先锋在线播放 | 成人手机在线播放 | 无码一区二区三区在线 | 欧美伊人影院 | 熟女俱乐部一区二区视频在线 | 毛片动态图 | 亚洲国产精品二区 | 国产九色av | 精品一区免费 | 久久超碰精品 | а中文在线天堂 | 天天干天天操天天操 | 免费视频网站在线观看入口 | 成人aaaaa| 欧美大屁股熟妇bbbbbb | 男人操女人免费视频 | www.黄色av| 国产精品久久久久久免费免熟 | 国产白袜脚足j棉袜在线观看 | 黄色网址视频在线观看 | 国产精品天美传媒入口 | 国产av无码专区亚洲av麻豆 | 五月综合色 | 美女久久久久久久 | 91福利区| 人妻va精品va欧美va | 九九看片 | 中文字幕 成人 | 亚洲一区影视 | 性色国产成人久久久精品 | 闷骚老干部cao个爽 av九九九 | www狠狠爱| 国产欧美精品久久 | 亚洲一区二区三区免费视频 | 欧美日韩精品在线视频 | 极品尤物魔鬼身材啪啪仙踪林 | 亚洲国产精品免费在线观看 | 日韩一区二区三区四区 | 久久精品tv | 欧美少妇xx | 美女扒开尿口给男人看 | 国产一区二区三区在线视频观看 | 懂色av一区二区三区四区 | 久久久黄色片 | 国产一级高清视频 | 欧美在线一区二区 | 国产区福利 | 亚洲AV无码阿娇国产精品 | 五十路息子 | 久久精品一区二区在线观看 | 爱草在线 | 欧美成人天堂 | 97成人免费 | 久久99精品久久久久久国产越南 | 免费特级毛片 | 最近中文字幕在线中文视频 | 热热热av | 玖玖久久| 欧美高h | 久久久麻豆| 黑人精品一区二区三区 | 色婷婷精品久久二区二区密 | 中文字幕av一区二区三区 | 古代黄色一级片 | 天天爽网站 | av天天色| 名人明星三级videos | 日韩aaaaaa | 中文字幕在线免费播放 | 欧洲美一区二区三区亚洲 | 国产aaa| 成人影片在线免费观看 | 国产做a | 欧美亚洲精品在线 | 欧美一级黄视频 | 日日干干 | www亚洲视频 | 色香蕉影院 | 欧美裸体女人 | 99视频国产精品免费观看a | www.久久av.com| 激情六月天婷婷 | 婷婷色基地| 黄色天堂av| 喷水视频在线观看 |