atomic_t<>: extend fetch_op to support cancellation
Use std::invoke inside atomic_op/fetch_op Remove op_fetch because it's easily replaced Add fetch_dec_sat algorithm (conditional decrement)
This commit is contained in:
+1
-1
@@ -21,7 +21,7 @@ bool cond_variable::imp_wait(u32 _old, u64 _timeout) noexcept
|
||||
verify(HERE), rc == WAIT_TIMEOUT;
|
||||
|
||||
// Retire
|
||||
while (!m_value.fetch_op([](u32& value) { if (value) value--; }))
|
||||
while (!m_value.fetch_dec_sat())
|
||||
{
|
||||
timeout.QuadPart = 0;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user