freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

windows編程基本手冊-閱讀頁

2025-07-14 09:03本頁面
  

【正文】 纖程決定下一個要運行的纖程,Volatile存儲可確保變量在被修改之后儲存在內(nèi)存中,而且在使用該變量之前永遠(yuǎn)從內(nèi)存中取它來,volatile限定符通知編譯器:這個變量可能在任何時間更改值,但是會影響性能,只有在需要的時候才使用它.使用volatile的指導(dǎo)原則,1. 必須是任何由并發(fā)線程訪問的變量,而且至少被一個線程修改.2. 即使是只讀訪問,該變量也至少被兩個線程訪問,并且正確的程序操作要依賴于新值能夠立即對所有線程可見.3. 互鎖函數(shù)(interlocked function的參數(shù)需要volatile變量但是使用volatile修飾符也不能確定其他處理器以特定順序看到修改,一個處理器可能先將值保存在緩存中,而后才提交給內(nèi)存4. 使用InterlockedIncrement(amp。可以使用TryEnterCriticalSection,返回TRUE表示成功擁有該CS,返回FALSE,.4)使用互鎖指令訪問和修改的任何變量都是volatile的,除了進(jìn)入和離開時會創(chuàng)建內(nèi)存屏障的不需要,但是臨界區(qū)無法傳信給其他線程,沒有超時能力.,會是已傳信的,其他線程不會永遠(yuǎn)被阻塞.,而CS只能輪詢,1如果WaitForSingleObject等待互斥量句柄不帶超時,那么調(diào)用的線程可能永遠(yuǎn)阻塞2如果線程終止或在離開CS之前終止,那么CS會處于不穩(wěn)定的狀態(tài),之后的行為是不確定的3互斥量粒度影響性能,大的臨界區(qū)的代碼區(qū)域如果長時間鎖住,并發(fā)性得不到保證.4鎖的使用要最小化5盡量以文字或表達(dá)式的形式將不變式記錄到文檔 信號量,可用來控制確切數(shù)量的線程醒來,但是如果請求計數(shù)遞減2存在著阻塞狀態(tài) 事件當(dāng)一個事件被傳信之后,多個線程可從等待狀態(tài)同時釋放,事件可分為手動復(fù)位和自動復(fù)位兩種。1WaitForMultipleObjects函數(shù)是以原子形式運行的,它在檢查內(nèi)核對象狀態(tài)時,其他任何線程都無法改變對象的狀態(tài),即等待時間最長的進(jìn)程得到這個對象,但是系統(tǒng)中的一些操作有可能改變這個特征,如果正在等待對象的線程暫停運行,那么因為無法對暫停的線程進(jìn)行調(diào)度,所以系統(tǒng)會忘記這個線程正在等待對象,而當(dāng)線程再次恢復(fù)運行時,系統(tǒng)則認(rèn)為這個線程剛剛開始等待這個對象,因此改變了線程的等待時間特征,,達(dá)到一個斷點時,這個進(jìn)程中的所有線程都會暫停運行,因此,調(diào)試一個進(jìn)程會使得先進(jìn)先出算法的結(jié)果難于預(yù)測.2PulseEvent會使事件變?yōu)橐淹ㄖ獱顟B(tài),然后立即變?yōu)槲赐ㄖ獱顟B(tài),如果在人工重置事件上調(diào)用,等待這個事件的所有線程都可以變?yōu)榭烧{(diào)度線程,如果在自動重置事件上調(diào)用,并且無法知道哪個線程將會看到事件發(fā)生,并變成可調(diào)度線程,所以pulseEvent并不十分有用.3WM_TIMER消息屬于最低優(yōu)先級消息,只有進(jìn)程對列中沒有其他消息,才對這條消息進(jìn)行檢索,定時器發(fā)出的報時信息將會喚醒正在等待之中的線程.4SignalObjectAndWait的優(yōu)點有兩個:通知一個對象等待另一個對象,可以節(jié)省很多處理時間,每次調(diào)用一個函數(shù),使線程從用戶模式代碼變成內(nèi)核模式代碼,大約需要1000個CPU處理周期(x86平臺上),不使用該函數(shù),一個線程無法知道另一個線程何時處于等待狀態(tài),1. 命名管道是面對消息的,讀進(jìn)程可以精確地讀入由寫進(jìn)程發(fā)送的不同長度的消息.2. 命名管道是雙向的,面對消息的.3. 可以有多個獨立的但具有相同名稱的管道實例4. 5. 命名管道要比匿名管道更可取,匿名管道可以進(jìn)行單向的(半雙工)基于字節(jié)的IPC,也會阻塞.6. 管道名稱是大小寫不敏感的,而且可以包含任何除反斜杠之外的字符,使用PeekNamePipe來確定是否有實際需要讀取的消息,在不破壞原有消息的基礎(chǔ)上讀入管道中消息的任意字節(jié),但它不會阻塞,立即返回.7. 郵槽是一個廣播機(jī)制,它與數(shù)據(jù)報類似1郵槽是單向的2郵槽是一對多的關(guān)系3寫者不知道是否對方實際接收到了消息4消息長度有限需要的操作1服務(wù)器使用CreateMailslot2使用ReadFile調(diào)用等待接收郵槽消息3打開郵槽并使用WriteFile寫入消息,查看分配的端口號1. 套接字客戶數(shù)量沒有上限,但命名管道實例的數(shù)量可以有限制,取決于第一次對CreateNamePipe的調(diào)用.2. 命名管道沒有顯示的端口號,而是通過名稱來區(qū)分.3. 兩次調(diào)用消息接收函數(shù)之間,緩沖區(qū)內(nèi)容和狀態(tài)必須得到保持.4. 每個數(shù)據(jù)部分以512字節(jié)為限,避免消息以碎片來發(fā)送服務(wù)的類型1SERVICE_WIN32_OWN_PROCESS 表示W(wǎng)indows服務(wù)運行自已的進(jìn)程2SERVICE_WIN32_SHARE_PROCESS 表示W(wǎng)indows服務(wù)與其他服務(wù)共享一個進(jìn)程,將許多服務(wù)合并到單一的進(jìn)程中3SERVICE_KERNEL_DRIVER 表示W(wǎng)indows設(shè)備驅(qū)動程序,保留系統(tǒng)使用4SERVICE_FILE_SYSTEM_DRIVER 指定Windows文件系統(tǒng)驅(qū)動程序,保留系統(tǒng)使用5SERVICE_INTERACTIVE_PROCESS 只能與兩個SERVICE_WIN32_X值組合使用,但是交互服務(wù)有安全危險.1. 多線程I/O,一個線程執(zhí)行正常的同步I/O,其他線程可繼續(xù)執(zhí)行.2. 重疊I/O(帶等待),線程在發(fā)出讀,寫或其他I/O操作命令之后繼續(xù)執(zhí)行,當(dāng)線程需要I/O結(jié)果才能繼續(xù)時,它要么等待文件句柄,要么等待ReadFile或WriteFile重疊結(jié)構(gòu)中指定的一個事件.3. 帶有完成例程的重疊I/O,系統(tǒng)在完成I/O操作完成時調(diào)用線程內(nèi)一個特定的完成例程回調(diào)函數(shù),在XP上重疊的擴(kuò)展I/O會是復(fù)雜的且極少能產(chǎn)生大量性能效益,4. 重疊I/O的后果:1I/O操作不會阻塞2返回值為FALSE不一定會失敗,因為I/O操作很可能尚未完成,在正常情況下,GetLastError()將返回ERROR_IO_PENDING ,表示沒有錯誤.3如果傳送尚未完成,那么返回的已傳送字節(jié)數(shù)也沒有用處4程序可能對單個重疊文件句柄發(fā)出多個讀或?qū)?所以,.5程序必須要能夠等待同步I/O的完成,對同一個句柄上有多個未完成的操作的情況時,必須能夠確定哪個操作已經(jīng)完成。*pn=5。HANDLE hMap=CreateFileMapping(hFile,..)。如果CreateFile調(diào)用失敗,所以必須查看CreateFile的返回值,以確定是否出現(xiàn)了錯誤.3堆可以用來分配一些較小的數(shù)據(jù)塊,不必考慮分配粒度和頁面邊界之類的問題,在默認(rèn)設(shè)置下,堆是順序運行的,如果有多個線程對堆進(jìn)行操作,堆函數(shù)必須執(zhí)行額外的操作,來保證堆的安全性,在創(chuàng)建一個堆時可以告訴系統(tǒng),只有一個線程訪問這個堆,這樣就不必再執(zhí)行額外的代碼,但是自已要負(fù)責(zé)堆的安全性.一個單獨的地址空間是由一個可執(zhí)行模塊和若干個DLL模塊組成的,若干個C/C++運行時庫可能會存在一個單一的地址空間中.如Void ExeFunc(){ PVOID pv=DLLFunc()。}PVOID DllFunc(){ Return (malloc(100))。內(nèi)聯(lián)函數(shù)的定義必須放在頭文件中, 編譯器才能在調(diào)用點內(nèi)聯(lián)展開定義. 然而, 實現(xiàn)代碼理論上應(yīng)該放在 .cc 文件中, 我們不希望 .h 文件中有太多實現(xiàn)代碼, 除非在可讀性和性能上有明顯優(yōu)勢.二十五. include 的路徑及順序 使用標(biāo)準(zhǔn)的頭文件包含順序可增強(qiáng)可讀性, 避免隱藏依賴: C 庫, C++ 庫, 其他庫的 .h, 本項目內(nèi)的 .h.又如, dir/ 的主要作用是實現(xiàn)或測試 dir2/ 的功能, 中包含頭文件的次序如下:1. dir2/ (優(yōu)先位置, 詳情如下)2. C 系統(tǒng)文件3. C++ 系統(tǒng)文件4. 其他庫的 .h 文件5. 本項目內(nèi) .h 文件二十六. 靜態(tài)和全局變量 禁止使用 class 類型的靜態(tài)或全局變量: 它們會導(dǎo)致很難發(fā)現(xiàn)的 bug 和不確定的構(gòu)造和析構(gòu)函數(shù)調(diào)用順序. 靜態(tài)生存周期的對象, 包括全局變量, 靜態(tài)變量, 靜態(tài)類成員變量, 以及函數(shù)靜態(tài)變量, 都必須是原生數(shù)據(jù)類型 (POD : Plain Old Data): 只能是 int, char, float, 和 void, 以及 POD 類型的數(shù)組/結(jié)構(gòu)體/指針. 永遠(yuǎn)不要使用函數(shù)返回值初始化
點擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1