国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Windows核心編程(第五版)筆記 第八章 用戶模式下的線程同步(Thread Sync...

第八章 用戶模式下線程同步

 

              以下線程同步方法僅限于同一進程內(nèi)的不同線程。不適用于不同進程的不線程。

1.原子訪問 Atomic Access 

              InterlockedExchange系列函數(shù)是針對于某個單一變量進行的原子操作         

              Volatile關(guān)鍵字告訴編譯器不要對變量的訪問做任何優(yōu)化,每次讀訪變量的值都要去內(nèi)存中讀而不是在寄存器中讀。         

2.臨界區(qū) 使一組操作原子化。

              臨界區(qū)對象用法:InitializeCriticalSection、(TryEnterCriticalSection ),EnterCriticalSectionLeaveCriticalSection、DeleteCriticalSection

             

              EnterCriticalSection

                              線程進入臨界區(qū)后 若其它線程試圖想進入該臨界區(qū)線程會處于阻塞(Wait)狀態(tài),使它們不占用任何CPU.           

3.讀寫鎖

              允許多個讀線程同時讀取共享數(shù)據(jù),但在同一時間只允許一個寫線程修改共享數(shù)據(jù)。

             

              用法:

                              InitializeSRWLock

                             

                              寫者:

                                              AcquireSRWLockExclusive、ReleaseSRWLockExclusive

                              讀者:

                                              AcquireSRWLockShared、ReleaseSRWLockShared

                                             

                              我們并不需要銷毀讀寫鎖對象,因為系統(tǒng)自動處理讀寫鎖對象。

             

              讀寫鎖的效率比臨界區(qū)要高到少一倍左右。

             

4.效率

              To summarize, if you want to get the best performance in an application,

              you should try to use nonshared data first and then use volatile reads, volatile writes, interlocked APIs, SRWLocks, critical sections.

              And if all of these won't work for your situation, then and only then, use kernel objects

             

5.條件變量

              條件變量要與臨界區(qū)對象或讀寫鎖對象一起使用。

              SleepConditionVariableCSSleepConditionVariableSRW

              WakeConditionVariableWakeAllConditionVariable           

             

6.Common API

              InterlockedExchangeAdd        InterlockedExchangeAdd64

              InterlockedExchange              InterlockedExchangePointer

             InterlockedBitTestAndReset

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
標(biāo)題:淺談Volatile與多線程
Linux內(nèi)核中的各種鎖:信號量/互斥鎖/讀寫鎖/原子鎖/自旋鎖/內(nèi)存屏障等
Java并發(fā)學(xué)習(xí)2【面試+工作】
java并發(fā)編程實踐筆記
volatile 能使得一個非原子操作變成原子操作嗎?
Java Threads 多線程10分鐘參考手冊
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服