1
我目前移植atomic.hpp出提升的一個項目,並希望推廣的原子附加功能,由此它的模板的類型補充:使用XADD不同的整數寬度
template <typename T, typename V>
inline T add(volatile T* mem, V val)
{
T r;
asm volatile
(
"lock\n\t"
"xadd %1, %0":
"+m"(*mem), "=r"(r):
"1"(val):
"memory", "cc"
);
return r;
}
我可以找不到明確的文檔,因爲使用帶符號和無符號8,16,32和64位數字是安全的。有人知道嗎?
你有沒有考慮過使用重載而不是模板? – 2011-01-26 19:12:05
我可以做但我仍然需要知道使用xadd作爲有符號和無符號的8位到64位數字是安全的...... – Graeme 2011-01-26 19:25:45