I used _xabort(status) function in my code, in order to release the buffer in cache. I check the transaction whether it's successful, if the transaction success, I use _xend(), otherwise I use _xabort(status). Can I use the _xabort(status) in this situation?
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;
}
}
}
Can I use the _xabort(status) like this? it's a single thread situation, I check the transaction_func() by myself, and call _xabort(status).
I think it's a issue about usage of _xabort(status), I don't know whether it can remain in (status == _XBEGIN_STARTED) area. In my opinion, if the status equals _XBEGIN_STARTED, it will not abort the transaction, so this code is not right?
If transction_func() return false, printf the status in this code, why the status value is '0xff000001'?