mirror of
https://github.com/ajisaacs/OpenNest.git
synced 2026-11-03 11:11:36 -05:00
DeadlineNestingEngine used CancelAfter, a thread-pool timer. A CPU-bound Parallel.For keeps pool threads on their own local work, so the timer callback can run seconds late; pinned to one CPU it waited for the whole best-fit search (m-sign-3 under a 10 s limit returned at 64.5 s). A dedicated background thread now waits for the limit, or for the solve to finish, and cancels; the solve joins it before returning. A test runs a CPU-bound Parallel.For from a pool thread under a 200 ms limit and requires the solve to end within 3 s; with CancelAfter it took about 7 s.