成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

談談PulseEvent的缺陷,你明白了嗎?

開發 架構
你可以嘗試使用SignalObjectAndWait這個函數,它會將信號激發和等待合并到一個單獨的操作中。但是即使是這樣,你還是無法確定線程在脈沖發生時是否正在等待事件。

PulseEvent這個是API會釋放一個(如果手動重置開啟的話,則是多個)正在等待事件對象的線程,并將事件對象設置一個”未設置”的狀態。如果這個時候碰巧沒有任何線程在等待這個事件,則事件除了被設置為”未設置”狀態以外,不會發生任何其他事情。

但它的缺陷就在這里。

你怎么知道,你所認為的正在等待事件的線程就一定是”真的(正在等待)”?顯然我們不能使用如下的方法:

因為在上面的代碼中,激發信號和等待事件這兩個操作存在一個競爭條件。信號對象所激發的線程可能在你等待事件對象之前,就已經完成了所有工作并將激發出一個事件脈沖(PulseEvent)了。

你可以嘗試使用SignalObjectAndWait這個函數,它會將信號激發和等待合并到一個單獨的操作中。但是即使是這樣,你還是無法確定線程在脈沖發生時是否正在等待事件。

當一個線程等待事件時,設備驅動或者內核本身的一部分可能會借用線程來進行一些任務處理(通過內核模式APC)。在此期間,線程不處于等待狀態,因為設備驅動正在使用它。如果PulseEvent在線程借用時發生,則它不會從等待中喚醒,因為PulseEvent函數只會喚醒在PulseEvent發生時正在等待的線程。

用戶模式程序不僅無法阻止內核模式代碼對用戶模式程序線程執行此操作,甚至也沒辦法檢測它是否已經發生。

(你可能會看到這種事情發生的一個地方是,如果你將調試器附加到進程,因為調試器會執行諸如掛起和恢復線程之類的事情,這會導致內核 APC。)

因此,PulseEvent 函數是沒有什么用的,我們應該避免使用它。

它繼續存在只是為了向后兼容。

附加信息:與內核 APC 相關的整個業務還意味著,當你激發一個信號量、自動重置事件或其他在發出信號時釋放單個線程的同步對象時,你無法預測哪個線程將被喚醒。 如果一個線程被“借用”來服務內核 APC,那么當它返回到等待列表時,它“回到行尾”。 因此,等待內核對象的對象的順序是不可預測的并且不能依賴。

總結

請老老實實使用SetEvent/ResetEvent,簡單,實在!

最后

Raymond Chen的《The Old New Thing》是我非常喜歡的博客之一,里面有很多關于Windows的小知識,對于廣大Windows平臺開發者來說,確實十分有幫助。

本文來自:《PulseEvent is fundamentally flawed》

責任編輯:武曉燕 來源: 拓撲梅爾
相關推薦

2022-12-30 08:35:00

2023-12-08 08:38:15

EventLoopAPI瀏覽器

2022-10-10 18:38:56

inert屬性鍵盤

2023-11-06 07:37:01

函數式插槽React

2023-06-09 07:18:03

開源數據庫

2023-12-28 08:43:28

前端算法搜索

2022-10-19 08:19:32

動態基線預警

2024-01-08 20:05:32

2022-05-31 07:32:19

JDK8API工具

2024-08-28 13:09:50

2022-09-09 10:15:06

OAuthJava

2023-12-06 08:01:03

CSSPostCSS

2023-06-14 08:15:34

算法合并操作Winner

2022-10-24 20:25:40

云原生SpringJava

2024-03-27 13:33:00

MySQLInnoDB事務

2024-01-25 09:10:10

GoRust標準庫

2022-07-27 08:31:28

SQL開發控制

2015-09-18 09:17:06

數據分析

2023-01-02 23:58:03

2022-10-08 08:09:13

MGRGreatSQL事務
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 人操人免费视频 | 欧美xxxx性| 中文字幕日韩专区 | 精品视频一区二区三区在线观看 | 国产成人精品一区二区三区网站观看 | 国产ts人妖另类 | 狠狠狠干| 亚洲视频一区在线观看 | 91av在线免费看 | 国产高清精品在线 | 久久久91精品国产一区二区三区 | 一区二区三区小视频 | 国产精品一区一区 | 日韩精品免费在线 | 久久成人综合 | 伊人激情网| 久久久久国产一区二区三区四区 | 国产精品一区二区日韩 | 亚洲男人的天堂网站 | 精品国产青草久久久久福利 | 久草新在线 | 欧美一级淫片免费视频黄 | 成人国产精品久久久 | 天天操天天玩 | 日韩1区2区 | 亚洲男女激情 | 国产精品美女久久久久aⅴ国产馆 | 中文字幕亚洲国产 | 青青久久 | 天天玩天天操天天干 | a级毛片毛片免费观看久潮喷 | 成人在线视频网 | 亚洲一区成人 | 亚洲成人蜜桃 | 国产精品福利一区二区三区 | 日本精品久久 | 国产人成精品一区二区三 | 国产精品一区在线 | 国产一区| 免费观看毛片 | 日本精品一区二区三区在线观看视频 |