diff --git a/mlx/scheduler.cpp b/mlx/scheduler.cpp index e3612f351..7bd128c10 100644 --- a/mlx/scheduler.cpp +++ b/mlx/scheduler.cpp @@ -56,8 +56,16 @@ namespace scheduler { /** A singleton scheduler to manage devices, streams, and task execution. */ Scheduler& scheduler() { + // Leak the scheduler on Windows to avoid joining threads on exit, can be + // removed after Visual Studio fixes bug: + // https://developercommunity.visualstudio.com/t/1654756 +#ifdef _WIN32 + static Scheduler* scheduler = new Scheduler; + return *scheduler; +#else static Scheduler scheduler; return scheduler; +#endif } } // namespace scheduler