我目前正在使用 Intel Haswell RTM(事务内存的硬件支持)开发应用程序。从我在这里和这里看到的情况来看,推荐的过程是使用某种回退锁,以防事务中止。
推荐的流程如下:
someTypeOfLock fallback_lock;
if(_xbegin == _XBEGIN_STARTED) {
if(fallback_lock.isLocked()) // put the lock into the transaction read_set
_xabort();
// do stuff
_xend();
}
else{
fallback_lock.acquire();
// do stuff
fallback_lock.release();
}
我的问题是 isLocked() 函数。到目前为止,我还没有找到任何提供此功能的主流库/类(如这里所见,大多数情况下它是无用的)。你有什么建议?
谢谢!