0

_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,printfstatus这段代码中,为什么状态值为'0xff000001'?

4

0 回答 0