#pragma once #ifndef EMSCRIPTEN #include #include #endif #include #include #include #include namespace ZL { class TaskManager { private: #ifndef EMSCRIPTEN boost::asio::io_context ioContext; std::unique_ptr> workGuard; std::vector workers; #endif public: TaskManager(size_t threadCount = 2); // ћетод дл¤ добавлени¤ фоновой задачи void EnqueueBackgroundTask(std::function task); // Graceful shutdown ~TaskManager(); #ifndef EMSCRIPTEN boost::asio::io_context& getIOContext() { return ioContext; } #endif }; class MainThreadHandler { private: std::queue> mainThreadTasks; #ifndef EMSCRIPTEN std::mutex mainThreadMutex; #endif public: void EnqueueMainThreadTask(std::function task); // ¬ыполнение задач по одной (или пачкой) за кадр void processMainThreadTasks(); }; } // namespace ZL