Atomic waiting refactoring (#9208)

* Use atomic waitables instead instead of global thread wait as often as possible.
* Add ::is_stopped() and and ::is_paued() which can be used in atomic loops and with atomic wait. (constexpr cpu flags test functions)
* Fix notification bug of sys_spu_thread_group_exit/terminate. (old bug, enhanced by #9117)
* Function time statistics at Emu.Stop() restored. (instead of current "X syscall failed with 0x00000000 : 0")
This commit is contained in:
Eladash
2021-02-13 16:50:07 +02:00
committed by GitHub
parent cf384795d2
commit f43260bd58
40 changed files with 375 additions and 234 deletions
+1 -1
View File
@@ -673,7 +673,7 @@ static error_code vdecOpen(ppu_thread& ppu, T type, U res, vm::cptr<CellVdecCb>
});
thrd->state -= cpu_flag::stop;
thread_ctrl::notify(*thrd);
thrd->state.notify_one(cpu_flag::stop);
return CELL_OK;
}