windows基礎複習

2022-09-13 18:00:12 字數 2916 閱讀 3027

1.1、命令提示符(控制台)是乙個軟體:如果你的軟體設定為控制台使用者介面,那麼window會拿命令提示行來執行你的軟體。

1.2、如果是視窗的話,windows就不會來管你,就只是直接載入。

1.3、hprevinstance:在你的程式中永遠都不要使用。

1.5、程序在死亡的時候我們需要做一些**和清理的事情。

1.6、核心物件洩露是會比記憶體洩露更加麻煩的事情。記憶體洩露可以通過關閉程序來解決,而核心洩露只能通過重啟作業系統來解決。

1.7、使用exitprocess等等,類似的函式來強制的結束程序是不明智的,這會使得資源無法被**。

1.8、程序許可權:

1.9、程序是完全封閉的。開放一些介面。

1.10、uac:帶過濾表的許可權。現在只能在程式的邊界上來進行許可權的提公升。

1.11、uac會最大限度的來保障使用者的安全。

1.12、任何的程序都是由很多個模組構成的。

1.14、main函式也是乙個執行緒函式。

1.15、程序消亡的所有的的當前程序的執行緒全部退出。

1.16、程序結束主線程退出,主線程退出所有的子執行緒退出。

1.17、waitforsingleobject函式等待子執行緒結束。才會去執行主線程之後的**,才會去消亡。保證了子執行緒能夠正常的退出。

1.18、在進行多執行緒引數專遞的時候一定要注意。有可能主線程退出的時候子執行緒還在使用主線程的推棧。而靜態成員或者全部變數可以解決這個問題。

1.19、exitthread函式會立即結束當前執行緒:會將屬於當前執行緒的棧銷毀、但是不會去呼叫析構函式。這很容易造成記憶體洩漏。

1.20、_beginthreadex(),新執行緒的建立建議都使用這個函式程序建立。因為該函式比createthread來的安全。而且更加具有移植性。

1.21、_beginthread(),這個函式並沒有新建棧,所以不要用。

1.22、suspendthread(hthread),函式會使得執行緒的暫停計數加一(suspend:暫停)、當執行緒暫停計數不為0的時候,執行緒就不會進入cpu排程。

1.23、resumethread(hthread),而這個函式會使暫停計數減一(resume:恢復)。

1.24、良好的程式中不應該出現執行緒的掛起:因為執行緒的掛起是非執行緒安全的。

1.25、等待、休眠:執行緒會放棄掉時間片。

1.26、switchtothread()函式會將當前執行緒的時間片放棄掉,然後將剩餘的時間片交給哪些飢餓度高的執行緒去執行。

1.27、

獲取context結構體:

context context;

context.contextflags =context_all;

getthreadcontext(hthread, &context);

_tprintf(text(

"ebp: 0x%x, esp: 0x%x, eip: 0x%x\r\n

"), context.ebp, context.esp, context.eip);//

選擇輸出

1.28、全域性變數是非執行緒安全的,在多執行緒程式設計中全域性變數會造成各種各樣的麻煩。

1.29、鎖的api(原子操作):interlockedexchange函式,返回引數以前的值。

1.30、所謂的原子操作就是一句一句的彙編**。

1.31、上鎖就相當於使多執行緒成為了單執行緒了。

1.32、當兩個或兩個以上的執行緒有資料的共享情況的話,盡量的讓其在同乙個cpu下執行。

1.33、旋轉鎖:在乙個while中不停的進行迴圈,直到獲准進入這個區域。

1.34、entercriticalsection(&gcs),這個函式進入臨界區,和死迴圈有些類似,主要的目的是擋住其他執行緒,不讓其他執行緒進入當前的這塊區域

以保證當前這塊**同一時間只有乙個執行緒在訪問。

1.35、資料同步:就是為了避免在訪問同一資源的時候發生錯誤,導致獲取到的值是錯誤的

1.36、鎖:

1.36.1、

while(interlockedexchange((long*)&busing, true) == true) //

在while迴圈中一直等待。等待到可執行狀態。

//code.

interlockedexchange((long*)&busing, false);

1.36.2、

critical_section gcs;//

邊界區,關鍵段。

initializecriticalsection(&gcs);//

初始化。

deletecriticalsection(&gcs); //

程序結束時候呼叫,delete

//執行緒中:

entercriticalsection(&gcs); //

進入臨界區

//code.

releasecriticalsection(&gcs);//

退出臨界區

1.36.3、

srwlock gsrw;//

_slim鎖

initializesrwlock(&gsrw);//

初始化,這個只有初始化沒有delete。

//執行緒中,分為獨佔鎖和共享鎖:

//獨佔鎖方式:

acquiresrwlockexclusive(&gsrw);

//code.

releasesrwlockexclusive(&gsrw);

//共享鎖方式:

acquiresrwlockshared(&gsrw);

//code.

releasesrwlockshared(&gsrw);

//這裡的獨佔和共享需要注意的是:在意獨佔鎖方式鎖的執行緒一旦獲得准許所有的一共享鎖方式鎖的執行緒必須全部退出。

//在以共享鎖方式鎖的執行緒在執行的時候,獨佔鎖方式鎖的執行緒不會執行。

WINDOWS程式設計 複習(2)

可選mm anisotropic 任意 x y 可選可選 上面這個圖我是從這個部落格轉過來的。至於有什麼區別了,我覺得說不清楚,直接給上測試 吧 include lresult callback wndproc hwnd,uint,wparam,lparam int winapi winmain h...

複習測試基礎

以後經常地筆試要開始了,還是多看看書吧,軟體測試過程 測試計畫 測試需求 測試設計 測試執行 測試記錄 分析 完畢 測試總結 黑盒測試又稱功能測試或資料驅動測試,是把測試物件當作看不見內部的黑盒。在完全不考慮程式內部結構和處理過程的情況下,測試者僅依據程式功能的需求規範考慮確定測試用例和推斷測試結果...

複習 JS基礎

以下算是經典的入門演算法吧,還記得第一次接觸時,感覺難得要命,現在來看,也不過如此!1 如果今天是星期六,那麼1000天後是星期幾?用一條語句計算出來。var a 1000 7 6 7 alert a 2 使用者輸入乙個三位數,用程式計算三位數字的和。比如 使用者輸入155,就彈出11 使用者輸入3...