Files
parallel-gx1/Source/Core/VideoCommon
LibretroAdmin 767c898df8 Move every thread onto rthreads and add a lock-free parallel_for
No std::thread, std::async, std::future or std::promise is left. Each
thread is an sthread with a plain entry point: Common::ThreadEntry<&C::F>
turns a member function into one, Common::JoinThread joins and clears a
handle, and Common::StartDetachedThread covers the fire-and-forget users.

Common/ParallelFor.{h,c} (C89) runs fn(ctx, i) for i in [0, count) on a
persistent pool of one worker per extra core plus the caller. Jobs are
claimed with an atomic counter, workers park on an eventcount between
batches, and the batch hand-off is a seq_cst users/active pair, so there
is no lock anywhere. A caller that finds the pool busy runs its batch
serially instead of waiting. retro_deinit joins the pool.

- VolumeWii::HashGroup spawned 64 threads per 2 MiB group and
  EncryptGroup another one per core; both are now parallel_for batches
  on the pool. The H1/H2 tail is a few small hashes and runs inline.
- VolumeVerifier spawned up to five std::async threads per chunk; the
  chunk's tasks now go to one persistent worker that fans them out with
  parallel_for, still overlapping the next read. The Redump lookup is an
  sthread joined in Finish or the destructor.
- The dual-core "GPU thread" in Core only set a thread_local on itself
  and exited, since the frontend runs the GPU loop. It is gone, along
  with the non-libretro branches of Core.cpp.
- The emu thread is started through Core::StartEmuThread.
- CPU core counts come from cpu_features_get_core_amount().
2026-11-05 13:00:34 +01:00
..
2026-06-25 09:54:48 +01:00
2026-01-25 16:12:15 +01:00
2026-11-05 04:48:00 +01:00
2026-11-05 04:48:00 +01:00
2026-01-25 16:12:15 +01:00
2026-11-05 04:48:00 +01:00
2026-01-25 16:12:15 +01:00
2026-10-16 14:27:05 +01:00
2026-01-25 16:12:15 +01:00
2026-01-25 16:12:15 +01:00
2026-01-25 16:12:15 +01:00
2026-11-05 13:00:19 +01:00
2026-11-05 13:00:19 +01:00
2026-01-25 16:12:15 +01:00
2026-11-05 13:00:19 +01:00
2026-01-25 16:12:15 +01:00
2026-09-24 19:46:18 +02:00
2026-01-25 16:12:15 +01:00
2026-11-05 04:48:00 +01:00
2026-01-25 16:12:15 +01:00
2021-12-10 14:49:57 -08:00
2026-01-25 16:12:15 +01:00
2026-01-25 16:12:15 +01:00
2026-11-05 04:48:00 +01:00
2026-01-25 16:12:15 +01:00
2026-11-05 04:48:00 +01:00
2026-10-16 14:27:05 +01:00
2026-10-16 14:27:05 +01:00
2026-11-05 04:48:00 +01:00
2026-01-25 16:12:15 +01:00
2026-11-05 04:48:00 +01:00