From 50d84c9b7a8f18fb6c20112eb45e42a40b697286 Mon Sep 17 00:00:00 2001 From: resonalofi <122389673+Resonalofi@users.noreply.github.com> Date: Tue, 25 Aug 2026 12:21:45 +0800 Subject: [PATCH] =?UTF-8?q?fix(wasm):=20=E5=85=B3=E9=97=AD=20pthreads=20?= =?UTF-8?q?=E6=9E=84=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 浏览器需跨域隔离才能用共享内存,且 Worker 脚本受同源限制, 跨域 CDN 上的 pthreads 产物无法初始化。DFS 分区并行补上与 多算法并行同样的单线程守卫。 Co-Authored-By: Claude Opus 5 (1M context) --- CMakeLists.txt | 4 ---- src/deck-recommend/base-deck-recommend.cpp | 10 +++++++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c9e35b2..df42c1c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,12 +27,8 @@ if (EMSCRIPTEN) -Wuninitialized -fexceptions -flto - -pthread ) target_link_options(sekai_deck_recommend_wasm PRIVATE - -pthread - "-sPTHREAD_POOL_SIZE=4" - --bind -fexceptions -flto diff --git a/src/deck-recommend/base-deck-recommend.cpp b/src/deck-recommend/base-deck-recommend.cpp index 23bdf4b..42d4ff2 100644 --- a/src/deck-recommend/base-deck-recommend.cpp +++ b/src/deck-recommend/base-deck-recommend.cpp @@ -182,9 +182,13 @@ void BaseDeckRecommend::runRecommendAlgorithm( config.target == RecommendTarget::Score && Enums::LiveType::isMulti(liveType) && config.member == 5; - const int dfsThreads = orderIndependentScore - ? std::max(1, config.dfsParallelThreads) - : 1; +#if defined(__EMSCRIPTEN__) && !defined(__EMSCRIPTEN_PTHREADS__) + // 单线程 WASM 构建没有线程支持,分区并行退化为串行 + const int configuredDfsThreads = 1; +#else + const int configuredDfsThreads = std::max(1, config.dfsParallelThreads); +#endif + const int dfsThreads = orderIndependentScore ? configuredDfsThreads : 1; if (dfsThreads <= 1) { findBestCardsDFS( liveType, config, dfsCards, supportCards, scoreFunc,