現在寫了複雜的class
,並覺得我使用了很多CRITICAL_SECTION
。CRITICAL_SECTION設置並獲得單個布爾值
據我所知,有些類型的原子操作,總是在沒有任何硬件或軟件中斷的情況下執行。
我想檢查一下是否正確理解了一切。
- 要設置或獲取原子值,我們並不需要
CRITICAL_SECTION
,因爲這樣做不會有中斷。 bool
是原子的。
所以有我的陳述,想問,如果他們是正確的,如果他們是正確的,什麼類型的變量也可以設置或得到沒有CRITICAL_SECTION
?
P. S.我談論獲取或設置一個單值每方法,而不是兩個,不是五個,而是一個。
是否可以自動讀取/寫入/操作的類型是非常多的實現(甚至可能有編譯器選項)定義。你應該主要依靠'std :: atomic'和朋友。 – PlasmaHH
我要做的唯一功能是互鎖功能 - 例如'InterlockedIncrement'等[詳見這裏](http://msdn.microsoft.com/en-us/library/ms684122(v = vs.85).aspx)。 –
你會因此而陷入困境。在布爾周圍砰擊一個關鍵部分並不會完成任何事情。而std :: atomic <>不會*神奇地使一大塊代碼線程安全。線程安全需要從一開始就內置,您不能在以後添加它。 –