我_xabort(status)
在代码中使用了函数,以便释放缓存中的缓冲区。我检查交易是否成功,如果交易成功,我使用_xend()
,否则我使用_xabort(status)
。我可以_xabort(status)
在这种情况下使用吗?
unsigned status = 0;
while(true)
{
status = _xbegin();
if(status == _XBEGIN_STARTED)
{
//Transaction code
bool success = transaction_func();
if(success)
{
_xend();
break;
}
else
{
_xabort(0Xff);
continue;
}
}
}
我可以这样使用_xabort(status)
吗?这是单线程情况,我transaction_func()
自己检查,然后调用_xabort(status)
. 我认为这是关于使用的问题_xabort(status)
,我不知道它是否可以保留在(status == _XBEGIN_STARTED)
区域中。在我看来,如果 status 等于_XBEGIN_STARTED
,它不会中止交易,所以这段代码不对吗?
如果transction_func()
返回false,printf
在status
这段代码中,为什么状态值为'0xff000001'?