[問題] Interlocked variable API

看板C_and_CPP (C/C++)作者 (nahgnimiast)時間16年前 (2010/04/04 19:44), 編輯推噓0(0014)
留言14則, 3人參與, 最新討論串1/1
有兩個Widnows CE API,我分不清楚它們的區別,想請教 比較清楚的人。 (1) InterlockedCompareExchange(LPLONG a, LONG b, LONG c) (2) InterlockedTestExchange(LPLONG a, LONG b, LONG c) 網上找來的定義 http://msdn.microsoft.com/en-us/library/ms956784.aspx http://msdn.microsoft.com/en-us/library/ms683560(VS.85).aspx 這兩個函式我覺得做的事大概如下, (1) if(*a == c) *a = b; (2) if(*a == b) *a = c; 我覺得做的事情差不多,可是為麼會要分成兩個呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.121.128.177

04/04 19:59, , 1F
Performs an "atomic" compare-and-exchange operation
04/04 19:59, 1F

04/04 20:05, , 2F
我知道這兩個函式是atomic,但是不了解
04/04 20:05, 2F

04/04 20:05, , 3F
為什麼會有兩個看起來機乎一樣的函式
04/04 20:05, 3F

04/04 20:06, , 4F
想知道這兩個函式的差別在哪
04/04 20:06, 4F

04/04 20:08, , 5F
如果按照指令 compare 和 test 差別就是 == 和 & 的差別
04/04 20:08, 5F

04/04 20:13, , 6F
不好意思,我對指令不清楚。
04/04 20:13, 6F

04/04 20:14, , 7F
&指的是什麼。
04/04 20:14, 7F

04/04 20:16, , 8F
cmp/test 都是asm指令, 這邊應該不是指這個
04/04 20:16, 8F

04/04 20:16, , 9F
The only difference between the two functions is
04/04 20:16, 9F

04/04 20:16, , 10F
the order of the parameters.
04/04 20:16, 10F

04/04 20:21, , 11F
謝謝,因為atomic。所以應該會跟asm有些關係
04/04 20:21, 11F

04/04 20:21, , 12F
我猜可能是它保證aomic的asm不同?
04/04 20:21, 12F

04/04 22:00, , 13F
猜? cmp/test是我說的 但我後面貼的是CE的doc
04/04 22:00, 13F

04/05 00:52, , 14F
原來如此,謝謝你。
04/05 00:52, 14F
文章代碼(AID): #1Bk7k5cP (C_and_CPP)
文章代碼(AID): #1Bk7k5cP (C_and_CPP)