Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- template<class Worker, class Task>
- class ThreadProcess
- {
- public:
- // Количество потоков, количество воркеров.
- ThreadProcess(size_t thread_count, size_t worker_count);
- // Добавить задачу на выполнение.
- void Push(Task &&task);
- void Update();
- };
- class TaskSectorLoader
- {
- public:
- TaskSectorLoader(World &world, const SPos &pos)
- : m_world(world), m_pos(pos)
- {};
- // Вызывается перед началом загрузки.
- // Тут можно загрузить воркер данными.
- void BeginEvent(MapLoader &worker)
- {
- // Ищем в мире сектор, отправляем его в воркер.
- // Скорей всего увеличиваем счетчик ссылок у данного сектора, что бы он не удалился из мира.
- }
- // Вызывается когда загрузка закончена.
- // Тут можно достать из воркера нужные данные.
- void EndEvent(MapLoader &worker)
- {
- // Уменьшаем счетчик ссылок для сектора с позицией m_pos;
- }
- private:
- World &m_world;
- SPos m_pos;
- }
- в мире:
- ThreadProcess<MapLoader, TaskSectorLoader> mThreadProcess;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement