熬之滴水穿石:一切從windows編程開始(4)

來源:互聯網
上載者:User

                                                               4--winodws編程的核心函數

實際上我是從delphi的RAD工具走上windows編程這條道上,所以最初我接觸到了windows編程是非常簡單的。在很長一段時間,我並沒有使用過真正意義上的windowsAPI函數,delphi強大的VCL架構屏蔽了一切。讓我對於windows編程上面理解很是片面,很是膚淺。我一直以為拖動幾個控制項寫幾個事件代碼就是windows編程。直到後來我看到我一同事用VC寫程式,我從編輯器裡看到了一些我從未看到過的代碼,那樣的過程讓我引起一陣陣的恐慌。在對windows系統運行機制並不是熟悉的情況下,WINDOWS編程是一本很難啃下的骨頭,尤其後來做到多線程訊息通訊編程和IOCP編程時發現了這方面的不足。

但最為關鍵的還是要知道原理,知道windows視窗處理的機制到底是怎麼一回事,把這個搞明白了。再看看這些那些核心的API函數也不難理解了!那些年時常看到許多人在簡曆中寫精通windows編程,其實真正精通windows又能有幾人了。不過真正理解windows編程是可以通過幾個函數加深理解的,而這些都又跟作業系統原理相關的。以這些函數為切入點,深入進去也許你會發現會簡單些。我對於windows的重新瞭解都是從我那筆陳年舊賬的解決過程開始的,一切都是基於windows系統進程的狀態開始的。所以我對於這幾個函數很有印象。

WaitForSingleObject()

官方的解釋為:該函數用來檢測hHandle事件的訊號狀態,在某一線程中調用該函數時,線程暫時掛起,如果在掛起的dwMilliseconds毫秒內,線程所等待的對象變為有訊號狀態,則該函數立即返回;如果逾時時間已經到達dwMilliseconds毫秒,但hHandle所指向的對象還沒有變成有訊號狀態,函數照樣返回。參數dwMilliseconds有兩個具有特殊意義的值:0和INFINITE。若為0,則該函數立即返回;若為INFINITE,則線程一直被掛起,直到hHandle所指向的對象變為有訊號狀態時為止。

官方描述非常專業,實際理解起來卻很是簡單:其實這個函數就是在等待時間發生時使用的,該函數就是讓自己STOP,等待事件發生而已。

GetTickCount()

官方解釋為:從作業系統啟動到現在所經過(elapsed)的毫秒數,它的傳回值是DWORD。一般用於即時控制,該方法運用比較多。當然該方法你如果覺得還不夠精確,如果需要更精確的話,那就需要另外Q的QueryPerformanceFrequency()和QueryPerformanceCounter()方法,該方法可更用於基於CPU轉精度所需的資料

最後是Sleep()方法了,該方法就是讓當前線程進行休眠狀態,也是通常我們說起的掛起。線上程編碼中,該方法是用頻率很多的,尤其在迴圈裡面。我對自己所學的東西進行的反思就是從這個小小的sleep()開始的。在技術研發的路上,切誤輕視一切你認為非常簡單,但是正是這樣的簡單讓你有時候卻一籌莫展。

                                                                                                                                                                  (未完待續.........)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.